Entender los parámetros de la herramienta de secuencia de comandos

Casi todas las herramientas tienen parámetros, y sus valores se establecen en el cuadro de diálogo de la herramienta o dentro de de una secuencia de comandos. Cuando se ejecuta la herramienta, los valores de parámetro se envían a su secuencia de comandos. Su secuencia de comandos lee estos valores y continúa con su trabajo.

La siguiente ilustración muestra el cuadro de diálogo de una secuencia de comandos con tres parámetros: un espacio de trabajo de entrada, una clase de entidad de recorte y un espacio de trabajo de salida. Todas las clases de entidades del espacio de trabajo de entrada se recortan según la clase de entidad de recorte (usando la herramienta Recortar) y se escriben en el espacio de trabajo de salida.

Parámetros de herramienta de secuencia de comandos

En la ilustración anterior, una vez introducidos los valores de parámetros en el cuadro de diálogo de la herramienta y después de hacer clic en el botón OK, la secuencia de comandos lee los valores de los parámetros utilizando GetParameterAsText() como sigue:

 # Import arcpy site-package # import arcpy from arcpy import env  # Read the parameter values: #  1: input workspace #  2: input clip features #  3: output workspace # inWorkspace   = arcpy.GetParameterAsText(0) clipFeatures  = arcpy.GetParameterAsText(1) outWorkspace  = arcpy.GetParameterAsText(2) env.workspace = inWorkspace 

El orden de los parámetros debe coincidir

El orden de los parámetros del cuadro de diálogo de la herramienta debe coincidir con el orden de parámetros de su secuencia de comandos. Si, por ejemplo, cambia Entidades de recorte del parámetro 2 al parámetro 1 en la herramienta de secuencia de comandos, también debe cambar el orden de los parámetros en las propiedades de la herramienta de la secuencia de comandos.

sys.argv y arcpy.GetParameterAsText

Hay dos métodos para leer parámetros: sys.argv y la función arcpy GetParameterAsText(). Puede utilizar cualquiera de los dos. El ejemplo anterior podría reescribirse para que use sys.argv:

 # Read the parameter values: #  1: input workspace #  2: input clip features #  3: output workspace # inWorkspace   = sys.argv[1] clipFeatures  = sys.argv[2] outWorkspace  = sys.argv[3] env.workspace = inWorkspace
NotaNota:

sys.argv tiene un límite de 1.024 caracteres para un único parámetro. GetParameterAsText() no tiene límite de caracteres. Sólo por este motivo, se recomienda usar GetParameterAsText.

sys.argv se basa en 1 (el primer parámetro es 1), a diferencia de GetParameterAsText(), que se basa en 0 (el primer parámetro es 0).

LegadoLegado:

Antes de ArcGIS 9.2, las secuencias de comandos independientes (secuencias de comandos ejecutadas desde la línea de comando del sistema operativo) podían usar sólo sys.argv. GetParameterAsText() sólo funcionaría para herramientas de secuencia de comandos. Esta limitación se ha superado en la versión 9.2. Puede ver ejemplos de código que utilizan sys.argv. Estos ejemplos se han escrito antes de la versión 9.2. En la versión 9.2 y posteriores, puede sustituir GetParameterAsText() por sys.argv. Simplemente, procure reducir el índice de parámetros: sys.argv[1] pasa a ser GetParameterAsText(0).

Tipos de datos de parámetros

Todas las herramientas de secuencia de comandos tienen un tipo de datos asociado. Al abrir el cuadro de diálogo de la herramienta de secuencia de comandos, el geoprocesamiento utiliza el tipo de datos para comprobar el valor de parámetro. Por ejemplo, si introduce una clase de entidad para un parámetro con un tipo de datos de espacio de trabajo, el geoprocesamiento genera un error (una "X" roja en el cuadro de diálogo), como se muestra a continuación.

El geoprocesamiento genera un error cuando los tipos de datos no coinciden

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

Examinar a partir del tipo de datos

Otra forma de considerar los parámetros y los tipos de datos es tener en cuenta que el geoprocesamiento no envía valores a su secuencia de comandos si son del tipo de datos incorrecto. Esta es una ventaja clara para crear una herramienta de secuencia de comandos: el valor del parámetro se comprueba comparándolo con el tipo de datos del parámetro antes de enviar el valor a su secuencia de comandos.


7/10/2012