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 Delete Field acepta una lista de campos para eliminar, y el uso del parámetro se muestra como [campo_a_suprimir, ...]. Algunos parámetros, tales como el parámetro input_features de la herramienta Union, 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 Python, 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 de Python

En una secuencia de comandos, se puede pasar entradas multivalor como una lista de Python. 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 
from arcpy import env 
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 
from arcpy import env 
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 
from arcpy import env 
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 
from arcpy import env 
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 utilizando una ValueTable para el parámetro 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 utilizando ValueTable para el parámetro 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")

Temas relacionados

9/11/2013