¿Obtener una lista de entidades seleccionadas en ArcGIS for Desktop usando el código Python?

20

Tengo una pregunta sobre las selecciones en ArcGIS for Desktop. Supongo que tengo una capa en ArcMap y he seleccionado dos de cinco entidades.

¿Es posible obtener una lista de todas las características seleccionadas usando Python?

Estaría bien si hay una manera de obtener un atributo (o todos) especial (es) de las características seleccionadas almacenadas en una lista que puede escribirse en un archivo txt.

¿Es posible hacer esto en ArcGIS for Desktop?

Sven
fuente

Respuestas:

33

Cada vez que tenga una selección en una capa, un objeto de cursor solo devolverá las filas seleccionadas.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2
Jason Scheirer
fuente
66
Sin embargo, el problema es que si obtiene todas las funciones devueltas, no sabe si se seleccionaron TODAS o NINGUNAS.
Matej
2
¿Esto también se aplica a las entidades seleccionadas en la clase de entidad?
Jio
13

la función Describir también devolverá una lista. No estoy seguro de si esto es más rápido que el método del cursor, pero creo que es una herramienta útil. La lista resultante es la identificación del objeto para el conjunto de selección.

import arcpy

aa = arcpy.Describe("someFC")
ss = aa.FIDset
tt = ss.split("; ")
Print tt

[u'1363', u'1364', u'1365', u'1367', u'1369', u'1370']
Sam Flarity
fuente
Buena solución también! Lamentablemente, no puedo establecer dos veces el tacón verde. Esta solución hace que el script también sea independiente de las diferentes versiones de ArcGIS, porque en ArcGIS 10.1 los cursores se llaman de manera diferente que en ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ...).
Sven
44
Ambos tipos de cursor están disponibles en 10.1. No tiene que usar los nuevos cursores arcpy.da.
blah238
1
Esta respuesta ofrece una forma de verificar la selección vacía, lo que evitaría llamar inadvertidamente a una herramienta en una clase de entidad completa cuando, de hecho, no hubo entidades que cumplieran con sus criterios de selección.
nickbrick
Gran consejo @Sam Flarity, esta es una buena alternativa (¿más rápida?) Al uso de arcpy.SearchCursor o arcpy.da.SearchCursor
grego