Una de las principales preocupaciones para cualquier usuario de Python (y de otro tipo de lenguaje de programación) es cómo organizar, editar y analizar nuestros datos.

Desde Python siempre se ha trabajado con las funciones cursor de ArcPy las cuales devuelven objetos de memoria que contienen una o más filas de datos de una feature class o tabla. Ya desde la versión 10.1 incluye el módulo de acceso a datos arcpy.da que mejora considerablemente el rendimiento en el acceso a datos con cursores, con lo que ESRI demuestra una vez más el interés que posee en el desarrollo e integración de Python.

arcpy_cursor_0

Este módulo permite el control de la sesión de edición, la operación de edición, un soporte mejorado del cursor (incluyendo un rendimiento más rápido), funciones para convertir las tablas y clases de entidad hacia y desde las matrices NumPy, y soporte para el control de versiones, réplicas, dominios y subtipos de los flujos de trabajo.

Este módulo arcpy.da ofrece nuevos tipos de cursores sustituyendo a los anteriores (siguen siendo útiles) para manejar e interactuar con las diferentes fuentes de datos de ArcGIS (tablas, feature class, shapefiles, etc.) ofreciendo una mayor eficacia y rendimiento en la respuesta en operaciones tanto de lectura como de actualización de los datos. A continuación se muestra una gráfica de la ganancia de eficiencia en uno de estos cursores:

eficiencia
Fuente

A continuación se muestran los nuevos tipos de cursores:

arcpy.insertcursor –> arcpy.da.insertcursor

arcpy.searchcursor –> arcpy.da.searchcursor

arcpy.updatecursor –>arcpy.da.updatecursor

Este módulo arcpy.da posee diferentes tipos de funciones para el acceso a datos (por ejemplo ExtendTable, NumpyArrayToTable, etc.)…

dataaccessfuntions

…y diferentes tipos de clases para el acceso a datos (SearchCursor, Editor, etc.):

dataaccessclasses

A continuación vamos a realizar un ejemplo de código con el tipo de cursor arcpy.da.searchcursor (necesitas como mínimo la versión 10.1 para realizar el ejercicio). Vamos a desarrollar un script en el programa PyScripter que luego lanzaremos en la consola de Python de ArcMap. Vamos a seguir los siguientes pasos:

Antes que nada vamos a importar el módulo ArcPy y definimos el espacio de trabajo con la siguiente sentencia, “with” sirve para crear el cursor abre y cierra el cursor sin necesidad de preocuparte por los bloqueos:

1

El primer argumento a pasar al método SearchCursor es el nombre del dato que utilizaremos ( shape “Schools”). El segundo parámetro es una tupla que contiene el campo a devolver por la query, y el tercero es la cláusula where, la cual se compone de esta manera: “Facility=High School”.

2

A continuación utilizaremos el bucle ‘for’. También empleamos la función ‘sorted()’ para ordenar los contenidos del cursor. Para acceder a los valores de un campo/columna es suficiente con usar el número de índice del campo. En este caso queremos recuperar el campo “Name” que tiene el índice:

3

Guarda y ejecuta 4 el script. El script imprimirá el listado con cada nombre de cada High School en la ventana Iteractive Window como se puede ver en la siguiente imagen:

5

63343577

Y ya lo tendremos. Este ejemplo es sólo un avance de todo lo que se enseña en el “curso online Avanzado de Python en ArcGIS” de TYC GIS.

Formación de calidad impartida por profesionales

ArcPy Python en ArcGIS Avanzado