У многих инструментов геообработки имеются входные параметры, принимающие несколько значений. Если параметр заключен в квадратные скобки ([ ]), это указывает на то, что он может взять список значений (при просмотре справочной страницы инструмента либо при его использовании в окне Python). Например, инструмент Удалить поле (Delete Field) берет список полей для удаления, а использование параметра отображается как [drop_field, ...]. Некоторые параметры, например, параметр input_features инструмента Объединить (Union)Объединить (Union), берут список списков. Их использование отображается как [[in_features, {Rank}], ...].
Любой параметр, который принимает список значений (или список списков значений) является многозначным параметром, он принимает одно или несколько значений. Существует три способа указать многозначный параметр.
- Как список, в котором каждое значение является элементом списка
- Как строку, в которой значения разделяются точкой с запятой.
- Как таблицу ValueTable, в которой значения сохраняются в виде виртуальной таблицы, состоящей из строк и столбцов.
Ниже приведены примеры каждого способа.
Как список
В скрипте многозначные входные данные могут быть переданы как список. Список заключается в квадратные скобки и является гибким типом Python.
Инструмент DeleteFields со списком Python для параметра drop_field
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', ['STREET_NAM', 'LABEL', 'CLASS'])
Инструмент Union со списком Python для параметра in_features
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.Union_analysis([['counties', 2],['parcels', 1]], 'state_landinfo')
Как строка
В некоторых случаях скрипт может использовать многозначную строку. Такая строка может быть возвращена как выходное значение инструмента или передана как входной параметр для скрипта.
Инструмент DeleteFields с многозначной строкой для параметра drop_field.
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', 'STREET_NAM;LABEL;CLASS')
Инструмент Union с многозначной строкой для параметра in_features
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
arcpy.Union_analysis('counties 2;parcels 1', 'state_landinfo')
с помощью ValueTable
Таблица ValueTable позволяет организовать значения в виртуальную таблицу, состоящую из строк и столбцов. При создании таблицы значений нужно указать число столбцов. По умолчанию в таблице один столбец.
Инструмент DeleteFields с таблицей ValueTable для параметра drop_field
import arcpy
arcpy.env.workspace = 'C:/base/county.gdb'
vt = arcpy.ValueTable()
vt.addRow('STREET_NAM')
vt.addRow('LABEL')
vt.addRow('CLASS')
arcpy.DeleteField_management('roads', vt)
Инструмент Объединение (Union) с таблицей ValueTable для параметра in_features
import arcpy
arcpy.env.workspace = 'C:/base/data/gdb'
vt = arcpy.ValueTable(2)
vt.addRow('counties 2')
vt.addRow('parcels 1')
arcpy.Union_analysis(vt, 'state_landinfo')