Trabajar con entradas de varios valores

Muchas herramientas de geoprocesamiento tienen parámetros de entrada que aceptan varios valores. Cuando vea la página de referencia de la herramienta o su uso en la ventana Python, cada vez que vea el parámetro incluido entre corchetes [ ], sabrá que puede aceptar una lista de valores. Por ejemplo, la herramienta Eliminar campo acepta una lista de campos para eliminar, y el uso del parámetro se muestra como [drop_field, ...]. Algunos parámetros, tales como el parámetro input_features de la herramienta Combinación, aceptan una lista de listas. Su uso se muestra como [[in_features, {Rank}], ...].

Cualquier parámetro que acepte una lista de valores (o una lista de listas de valores) es un parámetro multivalor; acepta uno o más valores. Hay tres maneras de especificar un parámetro multivalor:

  1. Como una lista, donde cada valor es un elemento de la lista
  2. Como una cadena de caracteres, donde los valores se separan mediante punto y coma
  3. Como una ValueTable, donde los valores se almacenan en una tabla virtual de filas y columnas

A continuación se muestran ejemplos de cada una:

Como una lista

En una secuencia de comandos, se pueden pasar entradas multivalor como una lista. Una lista se incluye entre corchetes y es un tipo Python flexible.

DeleteFields utilizando una lista de Python para el parámetro drop_field

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', ['STREET_NAM', 'LABEL', 'CLASS'])

Union utilizando una lista de Python para el parámetro in_features

import arcpy

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.Union_analysis([['counties', 2],['parcels', 1]], 'state_landinfo')

Como una cadena de caracteres

Puede que la secuencia de comandos tenga que utilizar una cadena de caracteres multivalor en algunos casos, porque puede devolverse uno como un valor de salida de una herramienta o pasarse como un parámetro de entrada para la secuencia de comandos.

DeleteFields utilizando una cadena de caracteres multivalor para el parámetro drop_field.

import arcpy 

arcpy.env.workspace = 'C:/base/county.gdb'
arcpy.DeleteField_management('roads', 'STREET_NAM;LABEL;CLASS')

Union utilizando una cadena de caracteres multivalor para el parámetro in_features

import arcpy 

arcpy.env.workspace = 'C:/base/data/gdb' 
arcpy.Union_analysis('counties 2;parcels 1', 'state_landinfo')

Con ValueTable

Una ValueTable permite organizar los valores en una tabla virtual de filas y columnas. Al crear una tabla de valor se especifica el número de columnas. El valor predeterminado es una única columna.

DeleteFields con una ValueTable para el parámetro 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)

Combinación con una ValueTable para el parámetro 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')