Obtendo a lista dos recursos selecionados no ArcGIS for Desktop usando o código Python?

20

Eu tenho uma pergunta sobre seleções no ArcGIS for Desktop. Supondo que eu tenho uma camada no ArcMap e selecionei dois dos cinco recursos.

É possível obter uma lista de todos os recursos selecionados usando Python?

Seria bom se existe uma maneira de obter um (s) atributo (s) especial (s) dos recursos selecionados armazenados em uma lista que pode ser gravada em um arquivo txt.

É possível fazer isso no ArcGIS for Desktop?

Sven
fonte

Respostas:

33

Sempre que você selecionar uma camada, um objeto cursor retornará apenas as linhas selecionadas.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2
Jason Scheirer
fonte
6
Mas o problema é que, se você receber todos os recursos retornados, não saberá se TODOS ou NENHUM foram selecionados.
Matej
2
Isso também se aplica aos recursos selecionados na classe de recursos?
Jio
13

a função Descrever também retornará uma lista. Não tenho certeza se isso é mais rápido que o método do cursor, mas gosto que essa seja uma ferramenta útil. A lista resultante é a identificação do objeto para o conjunto de seleção.

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
fonte
Boa solução também! Infelizmente, não consigo ajustar duas vezes o salto verde. Esta solução também torna o script independente de diferentes versões do ArcGIS, porque no ArcGIS 10.1 os cursores são chamados de maneira diferente da do ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ...).
Sven
4
Os dois tipos de cursor estão disponíveis em 10.1. Você não precisa usar os novos cursores arcpy.da.
blah238
1
Esta resposta fornece uma maneira de verificar a seleção vazia, o que evitaria chamar inadvertidamente uma ferramenta em uma classe de recurso inteira quando, na verdade, eram zero os recursos que atendiam aos seus critérios de seleção.
Nickbrick # 18/17
Grande dica @Sam Flarity, este é um bom (? Mais rápido) alternativa ao uso arcpy.SearchCursor ou arcpy.da.SearchCursor
grego