Configurar los parámetros de la herramienta de secuencia de comandos
Los parámetros de una herramienta de secuencia de comandos se pueden establecer mediante el asistente Agregar secuencia de comandos. También puede agregar, eliminar y modificar los parámetros de una herramienta de secuencia de comandos en el cuadro de diálogo Propiedades de la herramienta. Para acceder a las propiedades de la herramienta de secuencia de comandos, haga clic con el botón derecho del ratón en la herramienta, después haga clic en Propiedades y en la pestaña Parámetros.
Ya sea que esté configurando los parámetros en el asistente Agregar secuencia de comandos o en el cuadro de diálogo Propiedades, los procedimientos (como se describe aquí) son iguales.
Para agregar un parámetro nuevo, haga clic en la primera celda vacía de la columna Nombre de visualización y escriba el nombre del parámetro. Este es el nombre que se visualizará en el cuadro de diálogo de la herramienta y puede contener espacios. El nombre del parámetro para la sintaxis de Python será el nombre de visualización con los espacios reemplazados por guiones bajos (_).
Después de escribir el nombre de visualización del parámetro, seleccione un tipo de datos para el parámetro haciendo clic en la celda Tipo de Datos, como se muestra a continuación.
Cada parámetro tiene propiedades adicionales que usted puede configurar, como se muestra a continuación.
Propiedad |
Descripción |
---|---|
Puede ser Requerido, Opcional o Derivado. Derivado significa que el usuario de la herramienta no introduce un valor para el parámetro. Los tipos derivados siempre son parámetros de salida. |
|
Puede ser Entrada o Salida. Si el tipo de parámetro es Derivado, la dirección siempre es igual a Salida. |
|
Valor múltiple es Sí, si desea una lista de valores; No, si desea un valor simple. |
|
El valor predeterminado del parámetro. Cuando el tipo de datos del parámetro es un conjunto de entidades o un conjunto de registros, Predeterminado se reemplaza por Esquema. |
|
Si el valor predeterminado del parámetro proviene de una configuración del entorno, esta propiedad contiene el nombre de la configuración del entorno. |
|
Si desea que sólo se introduzcan para un parámetro algunos datasets o valores en particular, puede especificar un filtro. Existen seis tipos de filtros y el tipo de filtro que puede seleccionar depende del tipo de datos del parámetro. |
|
Esta propiedad se aplica a los tipos de datos de los parámetros de entrada y de salida derivada. Para los parámetros de salida derivada, se puede establecer Obtenido de como el parámetro que contiene la definición de la salida. Para los parámetros de entrada, se establece Obtenido de como el parámetro que contiene la información necesaria para la entrada. |
|
Esta propiedad sólo se aplica a los parámetros de salida. El valor es la ubicación de un archivo de capa (.lyr) que contiene la simbología para visualizar la salida. |
Tipo
Existen tres opciones de Tipo:
- Un parámetro Requerido requiere que el usuario introduzca un valor de entrada. No se puede ejecutar la herramienta hasta que el usuario suministre un valor.
- Un parámetro Opcional no requiere que el usuario introduzca un valor.
- Un parámetro Derivado sólo se utiliza con parámetros de salida (consulte Dirección a continuación). Un parámetro de salida derivada no se muestra en el cuadro de diálogo de la herramienta.
Un parámetro de salida derivada tiene los siguientes cinco usos:
- La salida es la misma que la entrada, como en Calcular campo. 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 contador, por ejemplo, obtiene un largo (la cantidad 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 una secuencia de comandos 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 la secuencia de comandos.
Si la herramienta de secuencia de comandos tiene salida derivada, deberá establecer el valor del parámetro de salida derivada en la secuencia de comandos con la función SetParameterAsText().
Todas las herramientas deberían tener salidas
Todas las herramientas de secuencia de comandos deberían tener parámetros de salida para utilizarlas en ModelBuilder. La idea fundamental de ModelBuilder es conectar la salida de las herramientas con las entradas de otras herramientas y, si la herramienta de secuencia de comandos no tiene un parámetro de salida, no será muy útil en ModelBuilder. Como mínimo puede obtener un valor booleano que contenga verdadero si la herramienta se completó correctamente, y de lo contrario, falso.
Salida derivada que modifica un parámetro de entrada
La ilustración siguiente muestra una herramienta de secuencia de comandos hipotética, Actualizar valores de campo, que se utiliza en ModelBuilder. (A fines de este ejemplo, una organización utiliza Actualizar valores de campo para examinar el contenido de un conjunto de campos de texto conocidos y corregir los errores ortográficos y de mayúsculas). Actualizar valores de campo no produce una nueva clase de entidad, pero sí actualiza los valores de campo en la clase de entidad de entrada.
En la ilustración siguiente se muestra la definición de parámetro correcta de Actualizar valores de campo, donde Actualizar valores de campo tiene un parámetro de clase de entidad de salida en el cual el Tipo se encuentra establecido como Derivado. Debido a que para esta herramienta, la salida es la misma que la entrada, Obtenido de se establece como el parámetro de entrada. (Obtenido de utiliza el nombre del parámetro, que es el nombre de visualización en el que los espacios se reemplazan por guiones bajos).
Salida derivada que no modifica un parámetro de entrada
La ilustración siguiente muestra una herramienta diferente, en la cual la salida es derivada, pero no se obtiene de ningún parámetro de entrada (Obtenido de se deja en blanco). En esta situación, la herramienta hipotética Publicar datos en repositorio copia la clase de entidad de entrada en un espacio de trabajo conocido (el repositorio), y a continuación agrega y completa un campo de fecha y hora.
Establecer el valor de salida
En el modelo que se ilustra a continuación, tenga en cuenta que la herramienta Copiar entidades se encuentra vacía (en color blanco en lugar de amarillo). Esto se debe a que la variable Entidades de salida, aunque se encuentre en color verde, no contiene un valor; no se conocen los nombres y la ubicación de las entidades de salida hasta que se ejecuta la herramienta. En este caso, la secuencia de comandos debe especificar el valor de salida utilizando la función de arcpy SetParameterAsText(). La función SetParameterAsText() establecerá el valor de un parámetro de salida mediante una cadena de texto o un objeto tal como una tabla de valores.
Se puede suministrar un valor para la salida antes de ejecutar la herramienta, si se suministra un código de validación de la herramienta.
Más información sobre validación de herramientas
Este es un ejemplo de código que utiliza SetParameterAsText(), basado en el trabajo hecho por la secuencia de comandos Publicar datos en repositorio descrita anteriormente.
# Post data to Repository - copies the input features to the # current repository, adding and populating a date # field # # Import system modules and arcpy # import sys import string import os import arcpy # Get the value of the input parameter # inFC = arcpy.GetParameterAsText(0) # Create the pathname to the output feature class. # 1) get the name of the feature class # 2) remove any file extension, such as ".shp" # (we're copying to a geodatabase which doesn't # allow file extensions, like .shp) # fcName = os.path.basename(inFC) fcName = os.path.splitext(fcName)[0] repository = "e:/repository/featuredata.gdb" outFC = os.path.join(repository, fcName) # Copy the input to the output, add the date field # arcpy.CopyFeatures_management(inFC, outFC) arcpy.AddField_management(outFC, "PostDate", "DATE") # Create a locale-specific string containing the current date # and time, then calculate it into the PostDate field, adding # the required quotes around the postTime string. # import time postTime = time.strftime("%x %X") arcpy.AddMessage(postTime) qPostTime = "\"" + postTime + "\"" arcpy.CalculateField_management(outFC, "PostDate", qPostTime) # Set output parameter # arcpy.SetParameterAsText(1, outFC)
Valores de salida en lugar de datos
Los ejemplos anteriores muestran salidas de datasets derivados. Algunas herramientas, sin embargo, obtienen valores en lugar de datasets, como la herramienta Obtener contador, que obtiene valores de un tipo de datos largo que contiene la cantidad de filas de una tabla. Es común obtener valores como salida en lugar de datasets. Puede tener secuencias de comando propias que realicen análisis de varios datasets relacionados y sólo obtener como salida un par de números, o un valor booleano de aprobación.
Los parámetros de salida que contienen tipos de datos de valor (como largo o booleano) son siempre Derivado y no Requerido.
Dirección
Esta propiedad define si el parámetro es una entrada de la herramienta o una salida de la herramienta.
Si el tipo de parámetro es Derivado, entonces la dirección del parámetro se establecerá automáticamente como salida.
Valor múltiple
Si desea que un parámetro pueda manejar una lista de valores en lugar de un solo valor, establezca la propiedad Valor múltiple como Sí.
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 texto, 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.
Los valores múltiples se transmiten a la secuencia de comandos como cadenas de texto delimitadas por punto y coma. Según la ilustración anterior, si el usuario seleccionó todos los tipos de carreteras, el valor del parámetro será Interestatales;Carreteras primarias;Carreteras secundarias. Para romper una cadena de texto delimitada, utilice el método split() de Python, tal como se muestra en el siguiente ejemplo de código.
roadTypes = arcpy.GetParameterAsText(0) roadTypeList = roadTypes.split(";") # Process each road type # for rType in roadTypeList: # rType contains an individual road type string (ex: "Interstates") # arcpy.AddMessage("Processing: " + rType)
Por defecto
El valor predeterminado será el contenido del parámetro cuando se abra el cuadro de diálogo de la herramienta de la secuencia de comandos. También es el valor que se utilizará si se introduce un # para el parámetro en la secuencia de comandos. Si no especifica un valor para la propiedad Predeterminado, el valor del parámetro estará vacío cuando se abra el cuadro de diálogo de la secuencia de comandos. Si especifica un valor para esta propiedad, la propiedad Entorno se inhabilitará. Para habilitar la propiedad Entorno, borre la propiedad Predeterminado.
Esquema
Cuando el tipo de datos de parámetros de entrada es un Conjunto de entidades o un Conjunto de registros, debe especificar la ubicación del esquema que define los campos y el tipo de geometría de las entidades que se introducirán. Un esquema es una clase de entidad, tabla o archivo de capa (.lyr).
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 de la secuencia de comandos 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.
Si desea obtener más información sobre los conjuntos de entidades y de registros, visite los siguientes vínculos.
Tema |
Descripción |
---|---|
El tema describe cómo utilizar los objetos FeatureSet y RecordSet en Python. |
|
Utilizar los controles interactivos de entrada de registro y de entidad |
El tema describe cómo utilizar los controles de los Conjuntos de entidades y de registros. |
Entorno
Puede establecer el valor predeterminado de un parámetro en el valor de una configuración del entorno haciendo clic con el botón derecho del ratón en la celda junto a Entorno y seleccionando el nombre de la configuración del entorno. Una vez que haya seleccionado una configuración del entorno, la propiedad Predeterminado será ignorada. Para utilizar la propiedad Predeterminado en lugar de la propiedad Entorno, borre la propiedad Entorno seleccionando la entrada vacía de la lista desplegable.
Filtro
Si desea que sólo se introduzcan para un parámetro algunos tipos de dataset o valores, puede especificar un filtro. Haga clic en la celda que se encuentra junto a Filtro y seleccione el filtro adecuado en la lista desplegable. Se abre un cuadro de diálogo y se especifican los valores para el filtro. Existen seis tipos de filtros y el tipo de filtro que puede seleccionar depende del tipo de datos del parámetro.
Tipo de filtro |
Valores |
---|---|
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 texto, largo, doble y booleano. |
Rango |
Un valor mínimo y máximo. Utilizado con los tipos de datos largos y dobles. |
Clase de entidad |
Una lista de tipos de clase de entidad permitidos: "Point", "Multipoint", "Polyline", "Polygon", "MultiPatch", "Sphere", "Annotation", "Dimension". Se puede proporcionar más de un valor del filtro. |
Archivo |
Una lista de sufijos de archivos. Ejemplo: "txt; e00; ditamap". |
Campo |
Una lista de tipos de campos permitidos: "Short", "Long", "Single", "Double", "Text", "Date", "OID", "Geometry", "Blob", "Raster", "GUID", "GlobalID", "XML". Se puede proporcionar más de un valor del filtro. |
Espacio de trabajo |
Una lista de tipos de espacios de trabajo permitidos: "Sistema de archivos", "Base de datos local", o "Base de datos remota". Se puede proporcionar más de un valor. |
Por lo general, existe sólo un tipo de filtros que puede seleccionar. Sólo largo y dobles tienen dos opciones, Lista de valores y Rango.
También puede establecer filtros de forma programada suministrando la lógica de validación.
Más información sobre lógica de validación
Lista de valores
El filtro de la Lista de valores es muy útil para suministrar un conjunto de palabras clave. Muchas herramientas tienen un conjunto de palabras clave, como el parámetro de tipo de campo que se encuentra en Agregar campo, o el parámetro JoinAttributes de muchas de las herramientas del conjunto de herramientas Superposición.
Se puede utilizar un filtro de la lista de valores para los tipos de datos largo y doble. Para estos tipos, introduzca los valores numéricos permitidos.
Si desea que el usuario pueda seleccionar más de un valor, configure la propiedad Valor múltiple como Sí.
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 siempre es el primero de la lista. Estos valores se utilizan en la línea de comandos para especificar el valor. Consulte, por ejemplo, Agregar campo y las palabras clave {NULLABLE | NON_NULLABLE} utilizadas para la propiedad IsNullable.
Rango
Un parámetro largo o doble 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.
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 sólo Puntos como valor de filtro, el usuario sólo podrá introducir clases de entidad de puntos como valor de parámetro.
Archivo
El filtro de archivo contiene una lista de sufijos de archivos que un archivo puede tener, como txt (archivo de texto simple) y csv (valor separado 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.
Campo
El filtro de archivo define los tipos de campo permitidos: "Short", "Long", "Single", "Double", "Text", "Date", "OID", "Geometry", "Blob", "Raster", "GUID", "GlobalID", "XML". Se puede proporcionar más de un valor del filtro.
Espacio de trabajo
El filtro del espacio de trabajo especifica los tipos de espacios de trabajo de entrada que se permiten. Hay tres valores:
- Sistema de archivos
Una carpeta del sistema, que se utiliza para almacenar shapefiles, coberturas de ArcInfo, tablas INFO y cuadrículas
- Base de datos local
Una geodatabase de archivos o personal
- Base de datos remota
Una conexión de base de datos de ArcSDE
Obtenido de
La propiedad Obtenido de tiene dos propósitos:
- En un parámetro de salida derivada, Obtenido de se establece como el parámetro de entrada que será modificado por la herramienta. Si desea obtener más información sobre datos derivados y Obtenido de, consulte el debate anterior sobre la propiedad Tipo.
- En los parámetros de entrada, Obtenido de contiene el nombre de otros parámetros utilizados por el tipo de datos. Por ejemplo, en un tipo de datos de campo de entrada, Obtenido de se establece como el nombre del parámetro de la tabla que contiene los campos, como se muestra a continuación.
Sólo puede establecer Obtenido de para ciertos parámetros de entrada, como se muestra en la tabla siguiente.
Tipo de datos de entrada |
Tipo de datos de Obtenido de |
Descripción |
---|---|---|
Campo o Expresión 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 de estadísticas geográficas |
Capa de estadísticas geográficas |
La capa de análisis que contiene tablas |
Simbología
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) en la propiedad Simbología. 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.
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.