Ejemplo de análisis espacial con ArcPy: Clip

El uso de python tiene varias ventajas en nuestras tareas cotidianas en un Sistema de Información Geográfica.

Con ArcPy podemos utilizar cualquiera de las herramientas de geoprocesamiento que vemos en las ToolBoxes en modo de código Python, que además podremos enriquecer con bucles, condiciones, parámetros, etc. ArcPy es fácil de utilizar, fácil de aprender y está bien documentado.

Vamos a explicar cómo hacer un script para realizar análisis espacial con ArcPy. Concretamente ejecutaremos un clip, aunque el ejemplo puede aplicarse a cualquier geoproceso de las ArcToolbox.

Esta herramienta se utiliza para conocer los elementos geográficos (ya sean de tipo puntual, lineal o poligonal) que se encuentran dentro de unos límites que establecemos mediante una capa poligonal de corte:

analisis-espacial-con-arcpy

Cómo obtener el código

Tenemos varias opciones para obtener el código que necesitamos. Para empezar, todas las herramientas de las Toolboxes de ArcGIS vienen acompañadas de su correspondiente Ayuda, a la que podemos acceder bien a través del botón derecho sobre la herramienta, o bien en botón de ayuda del cuadro de diálogo de esa herramienta:

help-clip

Además contamos con la opción vía Web, tanto en foros específicos, por ejemplo: https://geonet.esri.com/community/developers/gis-developers/python, como en el buscador del ArcGIS for Desktop: http://desktop.arcgis.com/en/

Por suerte la documentación que nos ofrece ESRI es muy sencilla, clara y estructurada. Además siempre se acompaña de un ejemplo práctico que podemos reutilizar y adaptar a nuestras necesidades, aunque evidentemente un mayor grado de conocimientos y de destreza con la programación nos permitirá sacarle más ventaja a la ArcPy.

En el artículo 8 trucos para comenzar a trabajar con python sobre ArcGIS puedes ver nuestras recomendaciones para iniciarse con ArcPy.

La sintáxis de la herramienta Clip

Buscamos la herramienta y accedemos a su ayuda tal y como hemos visto en la imagen anterior. Se abrirá una página de ayuda con diferentes apartados:

  • Sumary,
  • Illustration
  • Usage,
  • Syntax,
  • Code Sample

Para nosotros estos dos últimos son los más importantes, ya que con ellos podemos ver cómo se traduce la herramienta a código Python y un ejemplo aplicado.

Como vemos en la ayuda, la sentencia que necesitamos es:

Syntax

Clip_analysis (in_features, clip_features, out_feature_class, {cluster_tolerance})

Las sentencias para ejecutar herramientas GIS siempre mantienen la misma estructura:

arcpy. + módulo específico (si tiene) + nombre de la herramienta + _apellido de la herramienta (si tiene)+ (parámetros entre paréntesis separados por comas, {parámetros opcionales})

En nuestro caso, vamos a prescindir de los parámetros opcionales, así que nuestra sentencia será:

arcpy.Clip_analysis("carreteras","zona_estudio",r"C:\CURSO_ARCPY\capas_res ultados\carreteras_estudio.shp")

Clip desde la ventana de Python de ArcGIS

Aunque tenemos varias opciones para ejecutar nuestro código, como el script es sencillo, consta de una sola línea de código, vamos a ejecutarlo con la opción más sencilla: desde la ventana de Python ubicada en ArcMap (en un script compuesto por varias líneas de código, es mejor utilizar un IDE como PyScripter).

EStos serían los pasos a seguir:

  1. Abrimos un proyecto en blanco de ArcGIS.
  2. Añadimos las capas a la TOC, en este ejemplo utilizamos una capa carreteras y una zona estudio de dimensiones más reducidas que la capa de carreteras:

capas

3. Abrimos la ventana de Python:

ventana-de-python

4. Tecleamos la siguiente sentencia:

arcpy.Clip_analysis("carreteras","zona_estudio",r"C:\CURSO_ARCPY\capas_resultados\carreteras_estudio.shp")

ventana-python

5. Ejecutamos el script pulsando Intro al final de la sentencia.

6. Se ejecutará la herramienta de Clip: se realizará un corte de la capa de carreteras con el marco de la zona de estudio, mediante la herramienta Clip_analysis.

7. Se añade la capa a la TOC:

resultado

Realmente no sería necesario añadir las capas al proyecto si establemecemos una variable con el espacio de trabajo, es decir:

env.workspace = "C:\CURSO_ARCPY"
arcpy.Clip_analysis("carreteras.shp","zona_estudio.shp",r"C:\CURSO_ARCPY\capas_res ultados\carreteras_estudio.shp")

Las posibilidades  de la ArcPy son tantas como las opciones que nos ofrece ArcGIS, con la ventaja de poder ejecutarlo para un número elevado de archivos y fuera del entorno de ESRI.

Si quieres aprender a realizar análisis espacial con ArcPy de forma profesional, inscríbete ahora al próximo curso online de ArcPy – Python para ArcGIS.