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