Exportar un modelo a una secuencia de comandos de Python
La opción para exportar un modelo a una secuencia de comandos de Python es valioso para obtener información sobre cómo se utilizan las herramientas y los entornos en Python, y a menudo puede iniciar su desarrollo. Después de editar y completar la secuencia de comandos, se puede agregar a una caja de herramientas o un modelo como herramienta de secuencia de comandos y ejecutan como cualquier otra herramienta de geoprocesamiento. Para exportar un modelo a una secuencia de comandos, siga estos pasos:
La funcionalidad para exportar modelos a JScript y VBScript se ha eliminado de ModelBuilder en la versión 10.
- En el menú de ModelBuilder, seleccione y haga clic en Modelo > Exportar > A secuencia de comandos Python.
- Haga clic en Guardar en en la flecha de lista desplegable y navegue hasta la ubicación donde desee guardar la secuencia de comandos.
- Introduzca un nombre de archivo para la secuencia de comandos.
- Haga clic en Guardar.
La edición de una secuencia de comandos de Python exportada
Hay casos en que su modelo exportado no funcionará. Tenga en cuenta los siguientes puntos cuando exporte un modelo a una secuencia de comandos:
- Si espera sobrescribir datos, establezca la propiedad arcpy.env.overwriteOutput en Verdadero.
- Si el modelo utilizó capas o vistas de tabla que no se crearon dentro del modelo original, esas capas o vistas de tabla deberá crearse en la secuencia de comandos mediante las herramientas como Crear capa de entidades y Crear vista de tabla.
- Los elementos de datos del modelo se convierten directamente en variables en la secuencia de comandos que se exportó. Evite los nombres de elementos de datos que serán incompatibles en Python (por ejemplo, clase, global y devolver). Para obtener una lista completa de las palabras clave reservadas, utilice el módulo de palabras clave de Python.
import keyword print keyword.kwlist
- Si el modelo utilizó cualquier sustitución de variable en línea como %workspace%, %scratchworkspace%, %n%, %i% o %variable name%, será necesario sustituirla por el valor correcto.
- Si el modelo utilizó un iterador, la lógica de iteración no se exportará y deberá ser reemplazada por los estamentos de bucle en Python.
- Solo se exportará el primer valor de una variable de lista.
- Si el modelo utilizó un conjunto de entidades o conjunto de registro, el código siguiente se creará en la exportación.El código intenta proteger contra una entrada nula o no válida al establecer la variable Feature_Set en una clase de entidad. Como la clase de entidad in_memory no existirá en el momento de la ejecución, debe actualizar la ruta para que durante la ejecución señale a una clase de entidad de la que se sepa que existe. También puede cambiar la lógica para lanzar un mensaje de error y detener la ejecución si eso tiene más sentido para su flujo de trabajo.
Exportar desde conjunto de entidades con un parámetro de modelo
Feature_Set = arcpy.GetParameterAsText(0) if Feature_Set == '#' or not Feature_Set: Feature_Set = "in_memory\\{F15C6411-0F4F-4A68-9BAC-29D6E7874669}" # provide a default value if unspecified
- Si el modelo utilizó un modelo único, como, por ejemplo, la herramienta Fusionar rama, Capturar valores o Calcular valor, estas herramientas no se ejecutarán en Python. Es necesario implementar el equivalente de las funcionalidades de Python que estas herramientas proporcionan. Por ejemplo, deberá utilizar si/otra lógica de ramificación en la secuencia de comandos.
- Si el modelo incluye submodelos, el contenido dentro de estos submodelos no se exporta. En lugar de eso, la caja de herramientas tendrá que ser referenciada y la herramienta de modelo tendrá que ser llamado dentro de la secuencia de comandos.