Integrar secuencias de comandos dentro de un modelo
Es posible integrar secuencias de comandos de Python o de otros lenguajes en modelos convirtiendo la secuencia de comandos en una herramienta de secuencia de comandos y agregándola a un modelo. Se puede hacer uso de este método cuando se requiere lógica de secuencia de comandos de Python o de otro lenguaje para mejorar un modelo o acceder a un paquete o programa externo desde ArcGIS.
El punto de partida para integrar secuencias de comandos dentro de modelos es la propia secuencia de comandos. La secuencia de comandos se debe escribir de tal manera que se pueda integrar en el marco de geoprocesamiento. Para obtener más información, consulte Escribir una secuencia de comandos de Python.
Una vez que se ha escrito la secuencia de comandos, se puede crear y agregar una herramienta de secuencia de comandos a una caja de herramientas. Esta herramienta de secuencia de comandos se puede agregar a un modelo y utilizarse para añadir una nueva funcionalidad al modelo.
Aplicación de ejemplo
No existe ningún método integrado para trabajar con HTML en ArcGIS. Sin embargo, las secuencias de comandos de Python permiten acceder a métodos y funciones que se pueden utilizar para crear y modificar documentos HTML. Para integrar esta funcionalidad HTML con ArcGIS, integre una herramienta de secuencia de comandos de Python en un modelo.
El siguiente ejemplo realiza consultas espaciales y de atributo en una capa de parcelas y genera un informe HTML que detalla los atributos de una parcela y de parcelas circundantes especificadas por el usuario. El archivo HTML se genera dentro de una secuencia de comandos de Python que se ejecuta desde el modelo.
La secuencia de comandos de Python
La siguiente secuencia de comandos, tabletohtml.py, se utiliza para leer el contenido de una tabla de entrada y generar un informe HTML. El código de la secuencia de comandos se proporciona al final de este tema.
Crear una herramienta de secuencia de comandos
Los siguientes pasos muestran cómo crear una herramienta de secuencia de comandos que ejecuta la secuencia de comandos tabletohtml.py. Para obtener más detalles sobre cómo crear herramientas de secuencia de comandos, consulte Recorrido rápido por la creación de herramientas de secuencia de comandos
- Haga clic con el botón derecho del ratón en una caja de herramientas y, a continuación, haga clic en Agregar > Secuencia de comandos.
Se abrirá el asistente Agregar secuencia de comandos.
- Utilice el asistente Agregar secuencia de comandos para especificar propiedades generales de la secuencia de comandos.
- En la siguiente página del asistente Agregar secuencia de comandos, especifique qué secuencia de comandos se ejecutará cuando se ejecute la herramienta de secuencia de comandos.
- En la siguiente página del asistente Agregar secuencia de comandos, especifique las propiedades de los parámetros de la herramienta de secuencia de comandos. Esta herramienta de secuencia de comandos tiene dos parámetros: una tabla de entrada y un archivo HTML de salida. Estos parámetros también se han definido en tabletohtml.py.
- Haga clic en Finalizar para agregar la herramienta de secuencia de comandos a la caja de herramientas.
Agregar la herramienta de secuencia de comandos a un modelo
- El informe de parcela del modelo realiza consultas espaciales y de atributo en una capa de parcelas. Agregue la herramienta de secuencia de comandos Tabla a HTML al modelo para agregar la funcionalidad de creación de HTML deseada.
- Conecte la salida de la herramienta Seleccionar capa por ubicación como la entrada a la herramienta de secuencia de comandos y establezca la ruta de la salida de la herramienta de secuencia de comandos (la ruta del archivo HTML a generar). Además, cambie el nombre de la salida de la herramienta de secuencia de comandos a Informe y convierta la variable en un parámetro de modelo.
import sys, string, os, arcgisscripting gp = arcgisscripting.create(9.3) tablePath = gp.GetParameterAsText(0) filePath = gp.GetParameterAsText(1) outfile = open(filePath, "w") fields = gp.ListFields(tablePath) fieldNames = [] for field in fields: if (field.type <> "Geometry" and field.type <> "BLOB"): fieldNames.append(field.name) outfile.write("<table border=""1"">\n") outfile.write("<tr>\n") for fieldName in fieldNames: outfile.write("<th>" + fieldName + "</th>\n") outfile.write("</tr>\n") cur = gp.SearchCursor(tablePath) row = cur.Next() while row: outfile.write("<tr>\n") for fieldName in fieldNames: outfile.write("<td>" + str(row.getValue(fieldName)) + "</td>\n") outfile.write("</tr>\n") row = cur.Next() del cur outfile.write("</table>\n") outfile.flush() outfile.close()