ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

Definición de parámetros en una caja de herramientas de Python

  • Trabajar con salidas derivadas
  • Crear parámetros de valor múltiple
  • Creación de la tabla de valores de parámetros
  • Definir valores predeterminados para un parámetro
  • Definir esquema de parámetro
  • Aplicar filtros a un parámetro
  • parameterDependencies
  • symbology
  • category

Casi todas las herramientas tienen parámetros y sus valores se establecen en el cuadro de diálogo de la herramienta o dentro de un script. Cuando se ejecuta la herramienta, los valores de parámetro se envían al código de fuente de la herramienta. La herramienta lee estos valores y continúa con su trabajo.

Para obtener más información sobre los parámetros, consulte Entender los parámetros de la herramienta de script.

En una caja de herramientas de Python (.pyt), los parámetros de herramientas se definen en un método getParameterInfo de clase de herramienta mediante la creación de objetos Parameter y la definición de sus propiedades.

Los objetos Parameter tienen muchas propiedades de lectura y escritura, pero las propiedades que se deben establecer para cada parámetro son, entre otras, las siguientes:

PropiedadDescripción

displayName

El nombre del parámetro tal y como se muestra en el cuadro de diálogo de la herramienta.

name

El nombre del parámetro, como se muestra en la sintaxis de la herramienta en Python.

datatype

Cada parámetro de herramienta de la caja de herramientas de Python tiene un tipo de datos asociado. Al abrir el cuadro de diálogo de la herramienta de script, el geoprocesamiento utiliza el tipo de datos para comprobar el valor de parámetro.

El tipo de datos también se utiliza para examinar los datos: solo se muestran en el cuadro de diálogo los datos que coinciden con el tipo de datos del parámetro.

Para obtener una lista de tipos de datos de parámetro, consulte Definir los tipos de datos de parámetro en las cajas de herramientas de Python.

parameterType

Existen tres opciones para parameterType:

  • Requerido—La herramienta no se ejecuta hasta que se proporcione un valor.
  • Opcional—El parámetro no requiere un valor.
  • Derivado—El parámetro es sólo para los parámetros de salida (consulte la instrucción a continuación). Un parámetro de salida derivada no se muestra en el cuadro de diálogo de la herramienta.

direction

Esta propiedad define si el parámetro es una entrada de la herramienta o una salida de la herramienta.

Si parameterType se ha definido como Derivado, el parámetro direction se debe definir como Salida.

El ejemplo siguiente define tres parámetros para una herramienta: un parámetro de entrada que acepta una capa de entidad, un parámetro de entrada que acepta un nuevo nombre de campo y un parámetro de salida derivado que se basa en el primer parámetro de entrada. Para que los parámetros se reflejen en la herramienta, devuelva los parámetros al final del método getParameterInfo.

def getParameterInfo(self):
    #Define parameter definitions
    # First parameter
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    # Second parameter
    param1 = arcpy.Parameter(
        displayName="Sinuosity Field",
        name="sinuosity_field",
        datatype="Field",
        parameterType="Optional",
        direction="Input")
    param1.value = "sinuosity"
    # Third parameter
    param2 = arcpy.Parameter(
        displayName="Output Features",
        name="out_features",
        datatype="GPFeatureLayer",
        parameterType="Derived",
        direction="Output")
    param2.parameterDependencies = [param0.name]
    param2.schema.clone = True
    params = [param0, param1, param2]
    return params

Trabajar con salidas derivadas

El último parámetro que se muestra arriba es un parámetro de salida derivada. Un parámetro de salida derivada tiene los siguientes cinco usos:

  • La salida es la misma que la entrada, como en Calcular campo o el ejemplo anterior. Calcular campo cambia los valores de un campo en particular en la tabla de entrada; no crea una tabla nueva ni modifica el esquema de la entrada. Se pueden encontrar otras herramientas en las cuales la salida es la misma que la entrada en la caja de herramientas Edición.
  • La herramienta modifica el esquema de la entrada, como en Agregar campo. Agregar campo agrega un campo a la tabla de entrada; no crea una tabla de salida nueva.
  • La herramienta utiliza la información en otros parámetros para crear una salida, como la herramienta Crear clase de entidad. Con la herramienta Crear clase de entidad, puede especificar el espacio de trabajo y el nombre de la nueva clase de entidad, y se crea la clase de entidad por usted.
  • La herramienta genera como salida un valor escalar, a diferencia de un dataset. Obtener conteo, por ejemplo, obtiene un valor largo (el número de registros). Siempre que la herramienta obtenga un valor escalar, la salida es Derivado.
  • La herramienta creará los datos en una ubicación conocida. Por ejemplo, puede tener un script que actualice una tabla existente en un espacio de trabajo conocido. No es necesario que el usuario suministre esta tabla en el cuadro de diálogo o en el script.

Crear parámetros de valor múltiple

Si desea que un parámetro pueda gestionar una lista de valores en lugar de un solo valor, defina la propiedad multiValue como True.

En los cuadros de diálogo de las herramientas, hay dos controles de interfaz de usuario distintos que se utilizan para los valores múltiples, como se muestra a continuación.

  • En campos, cadenas de caracteres y valores largos y dobles se utiliza una lista de casillas de verificación si contienen un filtro ValueList.
  • Todos los demás tipos de datos muestran el control de parámetro de valor múltiple.

A continuación, se ilustran ambos tipos de controles de valor múltiple.

Controles de valor múltiple

Según la ilustración anterior, si el usuario seleccionó todos los tipos de carreteras, el valor del parámetro se establece en ["Interestatales", "Carreteras principales", "Carreteras secundarias"].

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input",
        multiValue=True)

Creación de la tabla de valores de parámetros

Algunos parámetros, denominados como Tablas de valores, le permiten especificar varias entradas. Por ejemplo, puede incluir varios datasets para el parámetro Entidades de entrada de las herramientas Incorporar, Combinación y otras, o bien puede incluir varios campos para el parámetro Campos de estadísticas de las herramientas Disolver y Resumen de estadísticas.

Ilustración del control de parámetros de valor múltiple

Los parámetros de la tabla de valores se definen configurando datatype como GPValueTable y estableciendo una propiedad columns para definir los tipos de datos y los encabezados de columna del parámetro. En el ejemplo siguiente, un parámetro de la tabla de valores se define con dos columnas que aceptan nombres de campo y valores de cadena de caracteres para Tipo de estadística (GPString). Usando un ValueListfiltro y una lista de valores, se puede generar una lista desplegable en la columna GPValueTable correspondiente. Si desea establecer valores predeterminados para un parámetro de tabla de valores, utilice la propiedad values y proporcione los valores de parámetro en una lista de valores.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName ='Input Features',
        name ='in_features',
        datatype ="GPFeatureLayer",
        parameterType ='Required',
        direction ='Input')
    param1 = arcpy.Parameter(
        displayName='Statistics Field(s)',
        name='stat_fields',
        datatype='GPValueTable',
        parameterType='Required',
        direction='Input')
    param1.parameterDependencies = [param0.name]
    param1.columns = [['Field', 'Field'], ['GPString', 'Statistic Type']]
    param1.filters[1].type = 'ValueList'
    param1.values = [['NAME', 'SUM']]
    param1.filters[1].list = ['SUM', 'MIN', 'MAX', 'STDEV', 'MEAN']

Definir valores predeterminados para un parámetro

Los valores predeterminados se pueden configurar para un parámetro aplicando un valor directamente con la propiedad value o aplicando el valor de una variable de entorno con defaultEnvironmentName.

El valor predeterminado será el contenido del parámetro cuando se abra el cuadro de diálogo de la herramienta del script. También es el valor que se utilizará si se introduce un # para el parámetro en el script Si no se especifica value, el valor del parámetro estará vacío cuando se abra el cuadro de diálogo del script.

Definir un valor predeterminado a partir de un entorno

Puede establecer el valor predeterminado de un parámetro en el valor de una configuración del entorno estableciendo la propiedad defaultEnvironmentName en el nombre de la configuración del entorno. Una vez que haya elegido una configuración del entorno, la propiedad value se pasará por alto.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Workspace",
        name="in_workspace",
        datatype="DEWorkspace",
        parameterType="Required",
        direction="Input")
    # In the tool's dialog box, the first parameter will show 
    #  the workspace environment's value (if set)
    param0.defaultEnvironmentName = "workspace"

Definir esquema de parámetro

Cada parámetro de salida de tipo clase de entidad, tabla, ráster o espacio de trabajo tiene un objeto de esquema. Solo las clases de entidad de salida, las tablas, los rásteres y los espacios de trabajo tienen esquema; otros tipos, no. El objeto de esquema se crea mediante el geoprocesamiento. Accede a este esquema por medio del objeto de parámetro y configura las reglas para describir la salida de su herramienta. Después de establecer las reglas del esquema, el código de validación interna de geoprocesamiento examina las reglas que establece y actualiza la descripción de la salida.

Para obtener más información sobre el trabajo con un esquema, consulte Actualizar el esquema de una caja de herramientas de Python.

Cuando el tipo de datos del parámetro de entrada es Conjunto de entidades o Conjunto de registros, debe especificar fieldsRule y geometryType para las entidades que se van a introducir.

Acerca de Conjuntos de entidades y de registros

Los tipos de datos Conjuntos de entidades y de registros permiten la entrada de datos interactiva. Un Conjunto de entidades le permite al usuario del script crear entidades de manera interactiva en ArcMap haciendo clic en el mapa. El Conjunto de registros le permite al usuario crear filas en una cuadrícula de tabla simple de manera interactiva.

Conjuntos de entidades y de registros

La simbología y el esquema (los atributos y el tipo de geometría) se pueden configurar para los controles Conjunto de entidades y Conjunto de registros mediante la configuración de la propiedad value del parámetro como una clase de entidad, una tabla o un archivo de capa (.lyr).

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Feature Set",
        name="in_feature_set",
        datatype="GPFeatureRecordSetLayer",
        parameterType="Required",
        direction="Input")
    # Use __file__ attribute to find the .lyr file (assuming the
    #  .pyt and .lyr files exist in the same folder)
    param0.value = os.path.join(os.path.dirname(__file__),
                                "Fire_Station.lyr")

Si desea obtener más información sobre los conjuntos de entidades y de registros, visite los siguientes vínculos.

TemaDescripción

FeatureSets y RecordSets

El tema describe cómo utilizar los objetos FeatureSet y RecordSet en Python.

Uso de los controles de entrada de entidad y registro interactivos

El tema describe cómo utilizar los controles de los Conjuntos de entidades y de registros.

Temas sobre Conjuntos de entidades y de registros

Aplicar filtros a un parámetro

Aplicar un filtro a un parámetro permite limitar las opciones que el usuario tiene disponibles para un parámetro. Por ejemplo, puede configurar un filtro de campo que limita las opciones a solo campos de texto.

El geoprocesamiento crea filtros automáticamente para los parámetros de cadena de caracteres de tipo, larga, doble, clase de entidad, archivo, campo y espacio de trabajo. Aún si no establece un filtro para el parámetro, todavía hay un filtro relacionado con el parámetro, pero está vacío. Un filtro vacío es lo mismo que no tener filtro. Al agregar valores a un filtro vacío, se activa el filtro y las opciones del usuario quedan limitadas por los contenidos del filtro:

  • Un filtro sólo presenta opciones válidas para el usuario cuando busca datos. Si establece el filtro para clases de entidad de punto, sólo se muestran las clases de entidad de puntos cuando el usuario busca datos. Si establece el filtro para campos de texto, la lista desplegable de campos sólo muestra los campos de texto.
  • Si un usuario escribe en un valor de parámetro (en vez de elegir un valor de la lista o navegador de archivos), el valor se verifica con el filtro. Si el usuario introduce un valor no válido (un campo numérico en vez de un campo de texto, por ejemplo), se proporciona una advertencia o error automáticamente.

Si desea que solo se introduzcan para un parámetro algunos tipos de dataset o valores, puede especificar un filtro. Establezca filtertype en el valor adecuado. Existen seis tipos de filtros y el tipo de filtro que puede seleccionar depende del tipo de datos del parámetro.

Tipo de filtroValores

Lista de valores

Una lista de valores de cadena de texto o numéricos. Utilizado con los tipos de datos de parámetros de cadena de caracteres, largo, doble y booleano.

Rango

Un valor mínimo y máximo. Utilizado con los tipos de datos largos y dobles.

Clase de entidad

Lista de tipos de clases de entidad permitidos: punto, multipunto, polilínea, polígono, multiparche, esfera, anotación y dimensión. Se puede proporcionar más de un valor al filtro.

Archivo

Una lista de sufijos de archivo, por ejemplo, ['zip', 'xml'].

Campo

Lista de tipos de campo permitidos: corto, largo, único, doble, texto, fecha, OID, geometría, Blob, ráster, GUID, GlobalID y XML. Se puede proporcionar más de un valor al filtro.

Espacio de trabajo

Una lista de los tipos de espacio de trabajos permitidos: sistema de archivos, base de datos local o base de datos remota. Se puede proporcionar más de un valor.

Tipo y valores de filtro

PropiedadDescripción

type

El tipo de filtro (ValueList, Range, FeatureClass, File, Field y Workspace). Puede establecer el tipo de filtro cuando trabaje con los parámetros Long y Double (consulte la nota a continuación). Para otros tipos de parámetros, hay sólo un tipo de filtro válido, de modo que se ignora la configuración del tipo de estos parámetros. Si no desea filtrar los valores, establezca la propiedad de lista a una lista vacía.

list

Un lista de Python de valores del filtro. Si no desea filtrar los valores, establezca la propiedad de lista a una lista vacía.

Propiedades de filter

Por lo general, existe solo un tipo de filtros que puede seleccionar. Solo Largo y Doble tienen dos opciones: Lista de valores y Rango.

Lista de valores

El filtro de lista de valores resulta muy útil para proporcionar un conjunto de palabras clave. Muchas herramientas tienen un conjunto de palabras clave predefinido, como el parámetro Tipo de campo que se encuentra en Agregar campo o el parámetro Unir atributos de muchas de las herramientas del conjunto de herramientas de superposición.

Se puede utilizar un filtro de lista de valores para los tipos de datos Largo y Doble. Introduzca los valores numéricos permitidos para estos tipos.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input value",
        name="in_value",
        datatype="GPLong",
        parameterType="Required",
        direction="Input")
    # Set a value list of 1, 10 and 100
    param0.filter.type = "ValueList"
    param0.filter.list = [1, 10, 100]

Si desea que el usuario pueda elegir más de un valor, establezca la propiedad multiValue en True.

Se puede utilizar una Lista de valores para los tipos de datos booleanos. En los tipos de datos booleanos, la lista de valores contiene dos valores: el valor verdadero y el valor falso. El valor verdadero es siempre el primer valor de la lista. Los valores se utilizan en la línea de comandos para especificar el valor. Consulte, por ejemplo, Agregar campo y las palabras clave NULLABLE y NON_NULLABLE empleadas para el parámetro Field IsNullable.

Rango

Un parámetro Long o Double puede tener un filtro de rango. Los filtros de rango tienen dos valores: el mínimo y el máximo. El primer valor de la lista es el mínimo. El rango es inclusivo, lo que significa que tanto el mínimo como el máximo son opciones válidas.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input range",
        name="in_range",
        datatype="GPLong",
        parameterType="Required",
        direction="Input")
    # Set an acceptable range of 1 to 10
    param0.filter.type = "Range"
    param0.filter.list = [1, 10]

Clase de entidad

Para este filtro, seleccione uno o más valores de filtro. Las clases de entidad de entrada se verificarán según estos valores de filtro. Entonces, por ejemplo, si selecciona solo Punto como valor de filtro, el usuario solo podrá introducir clases de entidad de puntos como valor de parámetro.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    param0.filter.list = ["Polygon"]

Archivo

El archivo filter contiene una lista de los sufijos de archivo que un archivo puede tener, como txt (archivo de texto simple) y csv (archivo de valores separados por comas). Puede proporcionar cualquier texto como sufijo, no tiene que ser necesariamente un sufijo que ArcGIS reconozca. El sufijo puede tener cualquier longitud y no incluye el punto.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input File",
        name="in_file",
        datatype="DEFile",
        parameterType="Required",
        direction="Input")
    # To define a file filter that includes .csv and .txt extensions,
    #  set the filter list to a list of file extension names
    param0.filter.list = ['txt', 'csv']

Campo

El campo filter define los tipos de campos permitidos: Short, Long, Float, Single, Double, Text, Date, OID, Geometry, Blob, Raster, GUID, GlobalID y XML. Se puede proporcionar más de un valor al filtro.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Features",
        name="in_features",
        datatype="GPFeatureLayer",
        parameterType="Required",
        direction="Input")
    param1 = arcpy.Parameter(
        displayName="Field",
        name="field",
        datatype="Field",
        parameterType="Required",
        direction="Input")
    # Set the filter to accept only fields that are Short or Long type
    param1.filter.list = ['Short', 'Long']
    param1.parameterDependencies = [param0.name]

Espacio de trabajo

El filtro del espacio de trabajo especifica los tipos de espacios de trabajo de entrada que se permiten. Hay tres valores:

Filtros de espacio de trabajoDescripción

Sistema de archivos

Una carpeta del sistema, que se utiliza para almacenar shapefiles, coberturas, tablas INFO y cuadrículas

Base de datos local

Una geodatabase

Base de datos remota

Conexión de base de datos corporativa

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Workspace",
        name="in_workspace",
        datatype="DEWorkspace",
        parameterType="Required",
        direction="Input")
    # Set the filter to accept only local (personal or file) geodatabases
    param0.filter.list = ["Local Database"]

parameterDependencies

La propiedad parameterDependencies tiene dos finalidades:

  • Para un parámetro de salida derivado, parameterDependencies se establece en el parámetro de entrada que será modificado por la herramienta.
  • Para los parámetros de entrada, parameterDependencies contiene el nombre de otros parámetros utilizados por el tipo de datos.

# Third parameter
param2 = arcpy.Parameter(
    displayName="Output Features",
    name="out_features",
    datatype="GPFeatureLayer",
    parameterType="Derived",
    direction="Output")
param2.parameterDependencies = [param0.name]
param2.schema.clone = True

Solo puede establecer parameterDependencies para determinados parámetros de entrada, como se muestra en la tabla siguiente.

Tipo de datos de entradaTipo de datos del parámetro DependantDescripción

Campo o expresión de SQL

Tabla

La tabla que contiene los campos

Elemento de INFO o expresión de INFO

Tabla INFO

La tabla INFO que contiene los elementos

Clase de entidad de cobertura

Cobertura

La cobertura que contiene las entidades

Unidades de área o unidades lineales

GeoDataset

Un dataset geográfico utilizado para determinar las unidades predeterminadas

Sistema de coordenadas

Espacio de trabajo

Un espacio de trabajo utilizado para determinar el sistema de coordenadas predeterminado

Configuración de jerarquía de Network Analyst

Dataset de red

El dataset de red que contiene la información de jerarquía

Tabla de valores geoestadística

Capa de geoestadística

Una tabla de los datasets y campos que se van a utilizar en las Geostatistical Analyst Tools.

Tipos de datos de parameterDependencies

symbology

Si la salida de la herramienta es un conjunto de entidades, ráster, TIN o capa de Network Analyst, puede especificar la ubicación de un archivo de capa (.lyr) con la propiedad symbology. Cuando la herramienta se está ejecutando desde ArcMap, ArcGlobe o ArcScene, y Agregar los resultados de las operaciones de geoprocesamiento a la visualización se encuentra activado, la salida se agrega a la visualización y se dibuja utilizando la simbología definida en el archivo de simbología de capa.

def getParameterInfo(self):
    param0 = arcpy.Parameter(
        displayName="Input Raster",
        name="in_raster",
        datatype="DERasterDataset",
        parameterType="Required",
        direction="Input")
    param1 = arcpy.Parameter(
        displayName="Output Raster",
        name="out_raster",
        datatype="DERasterDataset",
        parameterType="Required",
        direction="Output")
    # Use __file__ attribute to find the .lyr file (assuming the
    #  .pyt and .lyr files exist in the same folder).
    param1.symbology = os.path.join(os.path.dirname(__file__), 
                                    'raster_symbology.lyr')
Nota:

El archivo de capa se lee cada vez que se ejecuta la herramienta. Si no se puede encontrar el archivo de capa (porque su ubicación cambió o se lo eliminó), se utilizará la simbología predeterminada.

category

Puede colocar parámetros en categorías diferentes para minimizar el tamaño del cuadro de diálogo de la herramienta. Las herramientas de Network Analyst utilizan categorías, como se muestra a continuación. Los parámetros con la misma cadena de categoría se agruparán juntos.

Categorías de parámetro

Las categorías siempre se muestran después de los parámetros no categorizados. No coloque los parámetros requeridos en categorías, porque están ocultos en el cuadro de diálogo de la herramienta.

Temas relacionados

  • Definir los tipos de datos de parámetro en la caja de herramientas Python
  • ¿Qué es una caja de herramientas de Python?
  • Entender los parámetros de la herramienta de secuencia de comandos

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2021 Esri. | Privacidad | Legal