Automatizar tareas: Model Builder o Python

La automatización de tareas de geoprocesamiento es recomendable para todos los técnicos GIS que necesiten realizar procesos espaciales o cuando nos encontramos involucrados en un proyecto que requiere la ejecución de gran cantidad de herramientas de geoprocesamiento, con lo que ahorramos tiempo y esfuerzo en la ejecución de dichos procesos. De igual forma al automatizar la tarea las posibilidades de error se reducen.

Para automatizar tareas tenemos dos opciones: utilizar un constructor de modelos (model builder en ArcGIS o el modelador de procesado en QGIS) o a través de código, utilizando scripts de Python (uno de los mejores lenguajes de programación para GIS). En esta entrada vamos a tratar de despejar dudas: ¿model builder o python?

Modelador de procesado
El modelador de procesado de QGIS es la herramienta análoga a Model Builder en ArcGIS, que permite crear modelos complejos con una interfaz gráfica simple y fácil de usar.

Ventajas de Model Builder

Aunque anteriormente ya hemos visto por qué usar un modelo para realizar geoprocesamiento, en este caso lo vamos a comparar con Python:

  1. No es necesario saber programar.
  2. Interfaz clara y sencilla. Su entorno visual que simplifica mucho la comprensión del proceso que llevas a cabo. Permitiéndonos ver de forma gráfica como procesaremos la información y nos permite separar los procesos, flujo de información y resultados.
  3. Es una forma de entender como funcionan los procesos espaciales.
  4. Se pueden integrar un scripts de python en un modelo.
  5. El Model Builder de ArcGIS permite exportar los modelos a código Python (ojo, sólo procesos sencillos).

Desventajas de Model Builder

  1. Los modelos funcionan para procesos muy cerrados y difícilmente se pueden readaptar.
  2. En el caso de trabajar con ArcGIS, no es recomendable la práctica de hacer un modelo complejo y exportarlo a Python. Con sentencias sencillas funciona, pero cuando el proceso se complica el código generado no suele funcionar en Python y además mezcla la librería Arcpy con el objeto geoprocessing (anterior a Arcpy), lo cual puede ser confuso.

Ventajas de Python

  1. Es posible ejecutar procesos sin necesidad de abrir el programa, ya que se puede utilizar un IDE (editor de código) como PyScripter o PyCharm que además de editar permiten depurar y ejecutar código.
  2. Puedes crear herramientas igual que con Model Builder y además crear cajas de herramientas (Toolboxes) en ArcGIS.
  3. Puedes iterar, crear bucles y establecer condiciones de modo más claro.
  4. Puedes seguir el código de modo más claro, con muchos procesos la interfaz gráfica puede llegar a ser engorrosa.
  5. Puedes manejar proyectos: tanto sus contenidos como generación de cartografía y series de mapas.
  6. Puedes integrar otros procesos escritos en Python.
  7. De modo sencillo aumentan las posibilidades de desarrollo reutilizando y compartiendo código.
python Data Driven Pages
Ejemplo de código Python en ArcGIS

Desventajas de Python

  1. Aprender Python requiere más tiempo que aprender a trabajar con un constructor de modelos.
  2. Frente a un constructor de modelos es más árido.

Conclusión

Conocer todas las opciones está bien para saber elegir la correcta. En nuestra experiencia, cuando se intenta llegar más lejos es bastante más complicado hacerlo con Model Builder que utilizar Python y a la vez es más limitado.

Model Builder puede ser útil para usuarios que no conocen Python y que no tengan que realizar proyectos muy complejos.

Python ofrece más posibilidades, por lo que la inversión de tiempo en aprender es tiempo que ahorraremos después en nuestros procesos.

Un caso real

Te piden adaptar el siguiente modelo para ejecutarlo en otro PC.

Por cada una de las herramientas tienes que cambiar las rutas de salida y nombres de capas:

model bilder o python

¿es operativo?

Se tarda menos tiempo en traducirlo a un script de Python.

Con la ventaja de que el usuario podrá adaptarlo a su pc y sus datos cambiando una sóla vez el nombre la ruta de la variable que recoge el workspace.