Select by atribute на python'е

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Select by atribute на python'е

Сообщение 5Nap » 03 июн 2014, 15:05

Скажите, пожалуйста, можно ли использовать выборку по атрибутам в скрипте для дальнейшей работы с ней БЕЗ создания нового слоя?
Т.е. есть строчка:

Код: Выделить всё

MeasurePoints=ConversionUtils.gp.GetParameterAsText(0)
points = gp.SelectLayerByAttribute_management(MeasurePoints, "NEW_SELECTION", " \"n_T\"=n")
Дальше необходимо эту выборку пихнуть в следующую функцию. Можно ли как входной параметр для следующей функции использовать объект "points"? Или придется создавать отдельный шейп из выборки?

И чтоб два раза не вставать - GetParameterAsText при использовании скрипта выдает путь c:/program files/arcgis/bin/selectedshape.shp (selectedshape.shp на самом деле расположен совсем не там) при этом работает правильно. Почему и как это исправить?
upd. небольшое пояснение про GetParameterAsText. Так происходит только в том случае, когда объекты добавляются в скрипт из ArcMap'а простым перетаскиванием. Т.е. slectedshape.shp в строчке входных данных значится просто как selectedshape. Если же указать файл через проводник, то все ок.
Последний раз редактировалось 5Nap 06 июн 2014, 12:45, всего редактировалось 1 раз.

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Select by atribute на python'е

Сообщение doujin » 04 июн 2014, 05:20

SelectLayerBy... применяет выборку к тому слою/классу, который вы ему передали, и вы можете продолжать работать с ним дальше, но уже с учетом выборки. То есть:

Код: Выделить всё

MeasurePoints = ConversionUtils.gp.GetParameterAsText(0)
gp.SelectLayerByAttribute_management(MeasurePoints, "NEW_SELECTION", " \"n_T\"=n")
# в следующую функцию передаем MeasurePoints
Для отчиски выборки вызываем:

Код: Выделить всё

gp.SelectLayerByAttribute_management(MeasurePoints, "CLEAR_SELECTION")
На счет второго вопроса не совсем понятно, что вы хотите исправить, если все работает правильно.

P.S. Кстати, почему gp? Вы под Arcgis 9.3 скрипт создаете?

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Re: Select by atribute на python'е

Сообщение 5Nap » 05 июн 2014, 10:13

За первое спасибо, сейчас буду пробовать)

Со вторым - правильно работает скрипт, который выполняет определенные действия над слоем. Но определение пути к шейпу происходит неверно. Т.е. я, к примеру, хочу отправить результат работы скрипта в ту же папку, в которой лежит шейп, а отправляю его в итоге в корневую директорию arcgis'а. Если при выборе входных данных выбрать файл не через перетаскивание из arcgis'а (тогда в строке входного файла пишется "MeasurePoints"), а через проводник (тогда там будет d:/work/project/shp/MeasurePoints.shp), то результат корректный. Вопрос, скорее, про определение пути к файлу.

Скрипт под 9.3, да

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 32

Re: Select by atribute на python'е

Сообщение 5Nap » 05 июн 2014, 10:13

del

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Select by atribute на python'е

Сообщение doujin » 06 июн 2014, 00:28

Используйте метод Describe. Он вернет вам объект, в котором есть атрибут CatalogPath. В нем будет полный путь к шейпу не зависимо от того, как вы его добавли: перетаскиванием с карты или указав путь в проводнике.

Код: Выделить всё

desc = gp.Describe(MeasurePoints)
full_path = desc.CatalogPath

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость