Abrufen einer Liste ausgewählter Features in ArcGIS for Desktop mithilfe von Python-Code?

20

Ich habe eine Frage zu Auswahlen in ArcGIS for Desktop. Angenommen, ich habe einen Layer in ArcMap und zwei von fünf Features ausgewählt.

Ist es mit Python möglich, eine Liste aller ausgewählten Funktionen abzurufen?

Es wäre in Ordnung, wenn es eine Möglichkeit gäbe, ein bestimmtes (oder alle) Attribut (e) der ausgewählten Features in einer Liste zu speichern, die in eine TXT-Datei geschrieben werden kann.

Ist dies in ArcGIS for Desktop möglich?

Sven
quelle

Antworten:

33

Jedes Mal, wenn Sie eine Auswahl auf einer Ebene haben, gibt ein Cursorobjekt nur die ausgewählten Zeilen zurück.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2
Jason Scheirer
quelle
6
Das Problem ist jedoch, dass Sie nicht wissen, ob ALL oder NONE ausgewählt wurden, wenn Sie alle zurückgegebenen Funktionen erhalten.
Matej
2
Gilt dies auch für ausgewählte Features in der Feature-Class?
Jio,
13

Die Describe-Funktion gibt auch eine Liste zurück. Ich bin nicht sicher, ob dies schneller ist als die Cursormethode, aber ich habe es als nützliches Werkzeug angesehen. Die resultierende Liste enthält die Objekt-IDs für den Auswahlsatz.

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
quelle
Gute Lösung auch! Leider kann ich die grüne Ferse nicht zweimal setzen. Diese Lösung macht das Skript auch unabhängig von verschiedenen ArcGIS-Versionen, da die Cursor in ArcGIS 10.1 anders aufgerufen werden als in ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ...).
Sven
4
Beide Cursortypen sind ab 10.1 verfügbar. Sie müssen nicht die neuen arcpy.da-Cursor verwenden.
blah238
1
Mit dieser Antwort können Sie prüfen, ob eine leere Auswahl vorhanden ist. Auf diese Weise wird verhindert, dass versehentlich ein Tool für eine gesamte Feature-Class aufgerufen wird, obwohl tatsächlich keine Features Ihre Auswahlkriterien erfüllt haben.
Nickbrick
Toller Tipp @Sam Flarity, dies ist eine nette (schnellere?) Alternative zur Verwendung von arcpy.SearchCursor oder arcpy.da.SearchCursor
Grego