Страница 1 из 1

Select by atribute на python'е

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

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

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. Если же указать файл через проводник, то все ок.

Re: Select by atribute на python'е

Добавлено: 04 июн 2014, 05:20
doujin
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 скрипт создаете?

Re: Select by atribute на python'е

Добавлено: 05 июн 2014, 10:13
5Nap
За первое спасибо, сейчас буду пробовать)

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

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

Re: Select by atribute на python'е

Добавлено: 05 июн 2014, 10:13
5Nap
del

Re: Select by atribute на python'е

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

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

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