Реалізація параметра MultiValue з кількома стовпцями з робочим столом Python та ArcGIS?


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.


Якщо вас цікавить список вибору багатозначного значення - я недавно бачив цю публікацію в блозі Есрі , це може бути корисним.
Олексій Терешенков

Відповіді:


1

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


0

якщо ви шукаєте спадному списку для параметра Ідентифікатор сайту, ви можете використовувати код як наступний:

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

Отже, ви можете створити курсор або скористатися іншим методом, щоб прочитати всі поля ФК та ​​передати їх, як список, до попереднього речення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.