Я разработал, как сделать это, хотя и довольно просто. Я хотел создать многозначный параметр, где я добавляю много 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 здесь .