Crear flujos de trabajo utilizando la ventana de Python
La ventana de Python es compatible con la ejecución de cientos de herramientas de geoprocesamiento a través del paquete del sitio de ArcPy. Puede ejecutar una sola herramienta o varias en un orden específico. La ventana de Python también proporciona acceso, a través de ArcPy, a diversas funciones y clases que son compatibles con flujos de trabajo de Python más complejos.
Entre las funciones compatibles con los flujos de trabajo de Python se encuentran los métodos para crear listas de ciertos tipos de datos, recuperar las propiedades de un dataset, validar el nombre de una tabla antes de agregarla a una geodatabase o realizar alguna de las otras funciones útiles de las secuencias de comandos.
La siguiente muestra de código utiliza la función ListFeatureClasses para generar una lista de todas las clases de entidad de un espacio de trabajo y después utiliza la herramienta GetCount para imprimir el número de entidades para cada clase de entidad en esa lista.
>>> arcpy.env.workspace = "c:/data" >>> for fc in arcpy.ListFeatureClasses(): ... print fc, arcpy.GetCount_management(fc)
Las clases como referencias espaciales, mapas de campo y campos e índices se pueden utilizar para crear objetos que se pueden usar con otras herramientas y funciones de geoprocesamiento.
Por ejemplo, especificar los detalles de todas las propiedades de una referencia espacial en Python toma mucho tiempo y es poco práctico. Al usar la clase de SpatialReference, se pueden completar rápidamente las propiedades de un objeto de SpatialReference y el objeto se puede utilizar como entrada de una herramienta de geoprocesamiento. En la siguiente muestra de código, el objeto de SpatialReference se completa con propiedades de la Proyección cónica equidistante de Norteamérica desde un archivo de proyección y después se utiliza con la herramienta CreateFeatureClass para crear una nueva clase de entidad con esa referencia espacial especificada.
import arcpy inputWorkspace = "c:/temp" outputName = "rivers.shp" spatialRef = arcpy.SpatialReference("c:/data/North America Equidistant Conic.prj") arcpy.CreateFeatureClass_management(inputWorkspace, outputName, "POLYLINE", "", "", "", spatialRef)
Crear funciones
Las funciones son pequeños bloques de código que realizan una tarea específica y que luego pueden incorporarse a flujos de trabajo más detallados. Una vez creada la función, se puede utilizar repetidamente, sin la necesidad de tener que escribir las mismas tareas una y otra vez.
def listFieldNames(table, wildcard=None, fieldtype=None): fields = arcpy.ListFields(table, wildcard, fieldtype) nameList = [] for field in fields: nameList.append(field.name) return nameList
En Python, las funciones se definen mediante la palabra clave de Python def, seguida del nombre de la función y la lista de parámetros. La función anterior, listFieldNames, es una función corta que devuelve una lista de nombres de campo de una tabla o clase de entidad. La sentencia devolver se utiliza para devolver un valor desde la función.
>>> fieldNames = listFieldNames("c:/data/water.gdb/water_pipes")
Sin embargo, si debe crear funciones a diario para poder hacer el trabajo, debería considerar escribir una herramienta de secuencia de comandos. Es un proceso progresivo que comienza con la escritura de pequeños fragmentos de código, sigue con la escritura de funciones propias y finaliza con la escritura de herramientas de secuencia de comandos de geoprocesamiento. Más información acerca de crear herramientas de secuencia de comandos propias.