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

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

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

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

Связанные темы

9/11/2013