Работа с многозначными входными данными

У многих инструментов геообработки имеются входные параметры, принимающие несколько значений. Если параметр заключен в квадратные скобки ([ ]), это указывает на то, что он может взять список значений (при просмотре справочной страницы инструмента либо при его использовании в окне Python). Например, инструмент Удалить поле (Delete Field) берет список полей для удаления, а использование параметра отображается как [drop_field, ...]. Некоторые параметры, например, параметр input_features инструмента Объединить (Union)Объединить (Union), берут список списков. Их использование отображается как [[in_features, {Rank}], ...].

Любой параметр, который принимает список значений (или список списков значений) является многозначным параметром, он принимает одно или несколько значений. Существует три способа указать многозначный параметр.

  1. Как список, в котором каждое значение является элементом списка
  2. Как строку, в которой значения разделяются точкой с запятой.
  3. Как таблицу 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')