Un recorrido rápido por ArcPy
ArcPy es un paquete de sitio que se basa en el exitoso módulo arcgisscripting y lo sucede. Su objetivo es crear la piedra angular para una manera útil y productiva de realizar análisis de datos geográficos, conversión de datos, administración de datos y automatización de mapas con Python.
ArcPy proporciona acceso a las herramientas de geoprocesamiento así como a las funciones adicionales, las clases y los módulos que le permiten crear flujos de trabajo simples o complejos de manera rápida y sencilla.
Las aplicaciones y las secuencias de comandos de ArcGIS escritas utilizando ArcPy se benefician de ser capaces de acceder y trabajar con los numerosos módulos de Python desarrollados por los profesionales y los programadores de SIG a partir de diversas disciplinas. La característica adicional del uso de ArcPy dentro de Python es el hecho de que Python es un lenguaje de programación de propósito general que es fácil de aprender y utilizar. Es interpretado y se escribe dinámicamente, lo que le proporciona la capacidad de realizar prototipos rápidamente y probar las secuencias de comandos en un entorno interactivo al mismo tiempo que es suficientemente potente para admitir la escritura de aplicaciones grandes.
ArcPy proporciona acceso a las herramientas de geoprocesamiento así como a las funciones, las clases y los módulos adicionales que le permiten crear flujos de trabajo simples o complejos. Hablando claramente, ArcPy se organiza en herramientas, funciones, clases y módulos.
Hablando técnicamente, las herramientas de geoprocesamiento son funciones disponibles de arcpy, lo que significa que se obtiene acceso a ellas como cualquier otra función de Python. No obstante, para evitar la confusión, siempre se realiza una distinción entre las funciones de herramientas y las que no lo son (tal como las funciones de utilidad, por ejemplo ListFeatureClasses()).
- Las herramientas se documentan en forma diferente que las funciones. Cada herramienta posee su propia página de referencia de herramientas en el sistema de ayuda de ArcGIS 10.1 for Desktop. Las funciones se documentan en la documentación de ArcPy.
- Las herramientas devuelven un objeto de Resultado; las funciones no.
- Las herramientas producen mensajes, a los que se accede mediante una variedad de funciones tal como GetMessages(). Las funciones no producen mensajes.
- Las herramientas obtienen licencias según el nivel del producto (ArcGIS for Desktop Basic, Standard o Advanced) y según la extensión (Extensión ArcGIS Network Analyst, Extensión ArcGIS Spatial Analysty así sucesivamente). Puede buscar qué niveles de licencia se requieren en la página de referencias de la herramienta. A las funciones no se les proporcionan licencias, se instalan con ArcPy.
Ejecutar una herramienta
El siguiente ejemplo muestra cómo ejecutar la herramienta Zona de influencia. Cuando la herramienta se ejecute, aparecerán mensajes por defecto al lado derecho de la ventana Python en la sección de ayuda.
>>> arcpy.Buffer_analysis("c:/data/Portland.gdb/streets", "c:/data/Portland.gdb/steets_buffer", "500 METERS")
Aquí hay otro ejemplo de la ejecución de herramientas. Este ejemplo utiliza las herramientas en las cajas de herramientas de administración y conversión de datos. Se agrega un campo en la clase de entidad de calles de entrada, se calcula el campo y después se carga la clase de entidad en la geodatabase corporativa de ArcSDE.
>>> import arcpy >>> arcpy.AddField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "TEXT") >>> arcpy.CalculateField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "!shape.length@miles!", "PYTHON_9.3") >>> arcpy.FeatureClassToFeatureClass_conversion("c:/data/Portland.gdb/streets", "Database Connections/MySDE.sde/PortlandDataset", "streets")
Obtener resultados de una herramienta
Cuando se ejecuta una herramienta de geoprocesamiento, los resultados de la herramienta se devuelven en un objeto de resultado. En general, este objeto es la ruta al dataset de salida que se produce o actualiza mediante la herramienta. En otros casos, es posible que contenga otros tipos de valores, tal como un número o valor booleano. Si un valor de salida de una herramienta es un parámetro de múltiples valores, los valores se proporcionan como una lista dentro de otra lista.
Los siguientes ejemplos de códigos muestran cómo se capturan los valores de retorno y qué podrían ser estos valores:
Devuelva la ruta de la clase de entidades de salida. El resultado se puede utilizar como entrada a otra función.
>>> result = arcpy.Buffer_analysis("rivers", "riverBuf", "50 METERS") >>> print result C:\Portland\Portland_OR.gdb\riverBuf >>> arcpy.Clip_analysis("streets", result, "streets_50m_of_rivers")
Devuelva la cantidad de entidades.
>>> result = arcpy.GetCount_management("streets_50m_of_rivers") >>> print result.getOutput(0) 54
Devuelva una lista de índices de cuadrícula espacial predeterminados para una clase de entidad.
>>> result = arcpy.CalculateDefaultGridIndex_management("streets_50m_of_rivers") >>> for i in range(0, result.outputCount): ... print result.getOutput(i) ... 560 200 0
Usar la configuración del entorno
La configuración del entorno de geoprocesamiento se puede considerar como un parámetro adicional que afecta a los resultados de una herramienta. Estos difieren de los parámetros de herramientas normales en que se establecen en forma independiente de la herramienta y se interrogan y se utilizan por las herramientas durante la ejecución. La configuración del entorno, tal como un área de interés, el sistema de coordenadas del dataset de salida y el tamaño de celda de un nuevo dataset ráster se pueden especificar y convalidar mediante las herramientas.
La configuración del entorno está disponible desde la clase env como propiedades. Estas propiedades se pueden utilizar para recuperar los valores del entorno y establecerlos. A continuación se encuentran ejemplos de cómo utilizar los valores del entorno:
Establecer el entorno de espacio de trabajo.
>>> arcpy.env.workspace = "c:/data/Portland.gdb" >>> arcpy.Buffer_analysis("streets", "streetBuf", "500 METERS")
Establecer el índice de cuadrícula espacial en el valor de retorno de una herramienta.
>>> arcpy.env.spatialGrid1 = arcpy.CalculateDefaultSpatialGridIndex_management("streets").getOutput(0)
Obtener la configuración del tamaño de celda del ráster y garantizar que sea de un tamaño específico para la salida estándar.
if arcpy.env.cellSize != 30: arcpy.env.cellSize = 30
Usar las funciones
Una función es una funcionalidad definida que realiza una tarea específica y se puede incorporar a un programa más amplio. Además de las herramientas, ArcPy expone diversas funciones para brindar mayor soporte a los flujos de trabajo de geoprocesamiento. Las funciones se pueden utilizar para enumerar ciertos datasets, recuperar las propiedades de un dataset, verificar la existencia de datos, validar el nombre de una tabla antes de agregarlo a una geodatabase o realizar muchas otras tareas de encriptación útiles.
El siguiente código de ejemplo muestra cómo obtener las propiedades de datos y verificar una extensión:
import arcpy # prints True print arcpy.Exists("c:/data/Portland.gdb/streets") # prints NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet sr = arcpy.Describe("c:/data/Portland.gdb/streets").spatialReference print sr.name # prints Available print arcpy.CheckExtension("spatial") arcpy.CheckOutExtension("spatial")
Usar las clases
Las clases de ArcPy, como las clases de SpatialReference y Extent, generalmente se utilizan como accesos rápidos de teclado para completar los parámetros de la herramienta de geoprocesamiento que de lo contrario tendrían un equivalente de cadena de caracteres más complicado. Una clase es similar a un plano arquitectónico. El plano ofrece el marco sobre cómo crear algo. Las clases se pueden utilizar para crear objetos, que comúnmente se denominan instancias.
import arcpy spatial_ref = arcpy.SpatialReference("Hawaii Albers Equal Area Conic")
Trabajar con los módulos
ArcPy incluye módulos que cubren otras áreas de ArcGIS. ArcPy es soportado por una serie de módulos, incluyendo un módulo de acceso de datos (arcpy.da), un módulo de representación cartográfica (arcpy.mapping), un módulo de Extensión ArcGIS Spatial Analyst (arcpy.sa), y un módulo de Extensión ArcGIS Network Analyst (arcpy.na).
Por ejemplo, las herramientas del módulo arcpy.sa utilizan las herramientas de la caja de herramientas ArcGIS 10.1 Spatial Analyst. No obstante, se configuran para admitir Map Algebra. En consecuencia, ejecutar arcpy.sa.Slope es igual a ejecutar la herramienta Pendiente de la caja de herramientas ArcGIS 10.1 Spatial Analyst.