Реализуете параметр MultiValue с несколькими столбцами с помощью Python и ArcGIS Desktop?


10

Я работаю над скриптом ArcGIS (9.3) Python. Одним из входных данных является список функций. Для каждой функции мне нужно выбрать соответствующее поле. Установка параметра в MultiValue дает хорошую таблицу в пользовательском интерфейсе для всех обрабатываемых функций. Как добавить еще один столбец в таблицу MultiValue, чтобы выбрать поле для каждой функции?

Кросс-пост: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

Ответ Esri с форума ArcGIS:

К сожалению, решение для этого было реализовано совсем недавно для 10.1 с входными данными ValueTable для инструментов сценариев. Вам нужно будет иметь два многозначных параметра с некоторой пользовательской проверкой, чтобы эта работа работала для 9.3.1.


Если вас интересует создание многозначного списка выбора - я недавно видел этот пост в блоге Esri , это может быть полезно.
Алексей Терешенков

Ответы:


1

Я разработал, как сделать это, хотя и довольно просто. Я хотел создать многозначный параметр, где я добавляю много FeatureLayers, а затем выбираю поле ID для каждого слоя. У меня это работает, но я не смог сделать, как сделать поле выпадающим списком, поэтому пользователь должен ввести имя поля вручную. Вот интерфейс:

Пример интерфейса

Если кому-то удалось решить эту проблему или какой-нибудь гуру из ESRI благословил нас своими знаниями, я бы хотел узнать, как превратить мой второй столбец (идентификатор сайта) в выпадающий список с перечислением конкретных полей. Если вы хотите увидеть пример этого, взгляните на инструмент Создать TIN .

В любом случае, чтобы создать этот интерфейс, я создал инструмент-скрипт и добавил параметр типа векторного слоя и установил его в многозначное значение, как показано ниже.

Начальная настройка интерфейса

Затем я нажал на вкладку «Проверка» вверху, а затем кнопку «Изменить». Поскольку этот параметр является шестым параметром в моем инструменте сценария, я обновил следующий код:

def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""

    # Get the 6th parameter
    param = self.params[6]
    param.datatype = "Value Table"
    param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]    
    return

Это сбрасывает интерфейс в таблицу с несколькими столбцами, которую я хотел. Когда вы используете GetParameterAsText, он возвращает следующее, используя мой пример:

pipeline pid;Dredging did


Я провел еще несколько исследований и создал инструмент, используя набор инструментов Python. Это работает очень хорошо, но есть ограничение, если вы вернетесь и выберете другой идентификатор. Я разместил код в GeoNet здесь .


0

Если вы ищете раскрывающийся список для параметра Site ID, вы можете использовать следующий код:

 param.filters[1].list = ['pid', 'id']

Таким образом, вы можете создать курсор или использовать другой метод, чтобы прочитать все поля FC и передать их в виде списка в предыдущее предложение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.