Я розробив, як це зробити хоч і досить просто. Я хотів створити параметр багатозначного значення, куди я додаю багато FeatureLayers, а потім виберіть поле для кожного шару. У мене це працює, але мені не вдалося працювати, як зробити поле випадаючим списком, тому користувач повинен ввести ім'я поля вручну. Ось інтерфейс:
Якщо комусь вдалося зламати цю проблему або якийсь гуру з 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 тут .