Получение списка выбранных объектов в ArcGIS for Desktop с использованием кода Python?

20

У меня есть вопрос относительно выбора в ArcGIS for Desktop. Предполагается, что у меня есть один слой в ArcMap, и я выбрал два из пяти объектов.

Можно ли получить список всех выбранных функций с помощью Python?

Было бы хорошо, если бы был способ получить один специальный (или все) атрибут (ы) выбранных объектов, хранящихся в списке, который можно записать в текстовый файл.

Возможно ли это сделать в ArcGIS for Desktop?

Sven
источник

Ответы:

33

Каждый раз, когда у вас есть выделение на слое, объект курсора будет возвращать только выбранные строки.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2
Джейсон Шайрер
источник
6
Но проблема в том, что если вы получите все возвращенные функции, вы не будете знать, были ли выбраны ВСЕ или НЕТ.
Матей
2
Это также относится к выбранным объектам в классе объектов?
Джио
13

функция Describe также возвращает список. Я не уверен, что это быстрее, чем метод курсора, но мне это нравится, чтобы быть полезным инструментом. Результирующий список - это идентификаторы объекта для набора выбора.

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 курсоры вызываются не так, как в ArcGI 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