Отримання списку вибраних функцій в ArcGIS for Desktop за допомогою коду Python?


20

У мене є питання щодо вибору в ArcGIS для Desktop. Якщо у ArcMap є один шар, я вибрав дві з п’яти функцій.

Чи можливо отримати список усіх обраних функцій за допомогою Python?

Було б добре, якщо є спосіб отримати один спеціальний (або всі) атрибут (-ів) вибраних функцій, що зберігаються у списку, який можна записати у файл txt.

Чи можливо це зробити в ArcGIS for Desktop?

Відповіді:


33

Кожен раз, коли у вас буде вибір на шарі, об'єкт курсору поверне лише вибрані рядки.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2

6
Але проблема полягає в тому, що якщо ти повернеш усі функції, ти не знаєш, чи було вибрано ALL або NONE.
Матей

2
Чи це стосується також вибраних функцій класу характеристик?
Jio

13

Функція Описувати також поверне список. Я не впевнений, чи швидше це, ніж курсорний метод, але мені подобається, що це корисний інструмент. Отриманий список є ідентифікатором об'єкта для набору вибору.

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']

Гарне рішення теж! На жаль, я не в змозі встановити зелений каблук у два рази. Це рішення робить сценарій також незалежним від різних версій ArcGIS, тому що в ArcGIS 10.1 курсори викликаються інакше, ніж в ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ...).
Свен

4
Обидва типи курсорів доступні в 10.1. Вам не доведеться використовувати нові курсори arcpy.da.
blah238

1
Ця відповідь дає можливість перевірити порожній вибір, що запобігає ненавмисному виклику інструменту для цілого класу функцій, коли насправді це було нульові функції, які відповідали вашим критеріям вибору.
нікбрік

Чудова порада @Sam Flarity, це приємна (швидша?) Альтернатива використанню arcpy.SearchCursor або arcpy.da.SearchCursor
grego
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.