En este artículo queremos mostrar cómo ejecutar procesos por lotes en QGIS, utilizando como ejemplo distintas capas ráster.
¿Qué es el procesamiento por lotes?
El procesamiento por lotes o batch processing es un método de procesado de datos espaciales muy útil para tratar múltiples capas de manera simultánea.
Se trata de una herramienta presente en Sistemas de Información Geográfica como QGIS y ArcGIS que permite aplicar un geoproceso espacial sobre múltiples capas de forma paralela, simultánea, parametrizando los valores de ejecución antes de lanzarlo.
El nombre de procesamiento es una traducción literal de la expresión inglesa batch processing, que viene a referirse a aplicar ciertas técnicas de procesado sobre un conjunto o grupo de elementos.
Cómo ejecutar procesos por lotes en QGIS
Poder tratar distintas capas aplicando un geoproceso de manera simultánea sobre ellas es realmente fácil en QGIS.
Para realizar batch processing en QGIS, deberemos dirigirnos al menú ráster o vectorial de QGIS y seleccionar el geoproceso que queremos realizar sobre nuestras capas de información geográfica. Una vez abierto el diálogo del geoproceso deberemos fijarnos en la parte inferior izquierda y acceder a “Ejecutar como proceso por lotes”.

Alternativamente, y para los geoprocesos no disponibles en esos menús generales de QGIS, podemos abrir la «Caja de herramientas de procesos» y acceder desde allí a los geoprocesos disponibles de los proveedores de QGIS.
Una vez localizado el geoproceso, con el botón derecho del ratón sobre él desplegamos las opciones y accedemos a “Ejecutar como proceso por lotes…”
De este modo se abrirá un nuevo diálogo mediante el cual podremos parametrizar la ejecución del geoproceso por lotes para cada una de nuestras capas.
Procesar múltiples capas simultáneamente en QGIS
La herramienta de proceso por lotes cuenta con una interfaz sencilla. Independientemente de cuál sea el geoproceso a lanzar por lotes, deberemos introducir los detalles para su ejecución: capas sobre las que actuar, parámetros de ejecución, rutas de salida…
Como ejemplo vamos a realizar un corte por extensión (máscara) de una serie de capas ráster utilizando un área de interés que actuará como capa de corte.

En nuestro caso deberemos indicar nuestras capas de entrada, la capa o capas que actuarán sobre las capas de entrada a modo de máscara y especificar el archivo y ruta de salida para cada elemento.
Si ya tenemos cargadas nuestras capas en QGIS podremos seleccionarlas desde cada uno de los botones de selección en cada celda. En caso de tener las capas almacenadas en un directorio de nuestro ordenador pero no cargadas en el lienzo del mapa, podemos acceder a ellas desde el símbolo de carpeta para importarlas.

Además, en caso de tener todas nuestras capas almacenadas en un único directorio podremos seleccionarlo para cargar y tratar automáticamente todas las capas de forma recurrente que se encuentren dentro del mismo.
Cada una de las celdas a rellenar contiene la opción desplegable de “Autorellenar…”. Se presentan distintas opciones que permiten agilizar nuestro trabajo para definir los parámetros. Si, por ejemplo, nuestra capa de corte es siempre la misma podemos asignar dicha capa a una sola celda y seleccionar la opción de rellenar hacia abajo para asignar a cada capa de entrada ese mismo elemento de corte.
También podemos introducir expresiones para realizar procesos avanzados sobre las capas, sus atributos, etc.
A la hora de exportar las capas resultantes del proceso e introducir los nombres de archivo como parámetro, tendremos la opción de dar un nombre de relleno para anteponerse, por ejemplo, a nuestra capa de entrada y así conocer cuál es la capa de origen de la resultante.

Como vemos, se trata de introducir los parámetros como si se tratara de un proceso único para una única capa pero pudiendo tratar a todas ellas a la vez, aunque adaptando los parámetros para cada una de ellas.
Otra de las opciones interesantes es la opción de guardar la configuración del proceso por lotes. Podemos hacerlo desde el símbolo del disco para guardar, que almacenará toda la configuración como un archivo tipo JSON. De este modo podemos recuperar la configuración de la ejecución para posteriores ocasiones o para asegurarnos que no perdemos esa configuración en caso que la ejecución falle, se cierre inesperadamente QGIS o nuestro ordenador no responda si sobrecargamos sus recursos con el procesado de demasiadas capas muy pesadas.

Como todo geoproceso en QGIS, encontramos una pestaña de “Registro” donde se irá mostrando el proceso de ejecución y se almacenará el log del mismo, mostrando posibles errores en la ejecución en base a los parámetros establecidos. Podremos corregirlos modificando de nuevo los parámetros.
Finalmente podemos activar la opción de cargar las capas al completar si deseamos visualizar el resultado al terminar la ejecución del proceso por lotes.

Como resultado tras la ejecución obtendremos las capas modificadas o analizadas bajo los parámetros introducidos lanzando un único proceso que actúa sobre todas las de entrada.
Ventajas del procesamiento de capas por lotes
En el ejemplo hemos utilizado tan sólo 3 capas de información, pero supongamos que contamos con cientos de imágenes de satélite. Realizar el mismo proceso de manera manual una y otra vez supondría muchas horas de trabajo, además de poder ocasionar errores en el proceso a la hora de parametrizarlo o de guardar la información.
Evidentemente, el uso del procesamiento por lotes es una ventaja enorme para agilizar el trabajo en QGIS, sobretodo en estos casos. Además, como hemos visto el control de la ejecución del geoproceso es completo.
Por supuesto, podemos ir un paso más allá y tratar de realizar análisis espacial y lanzar geoprocesos utilizando la programación y librerías como GDAL/OGR para tal fin, sin la necesidad de pasar por una interfície gráfica.
Si realizamos un script con Python para realizar este tipo de tareas repetitivas, tan sólo deberemos adaptarlo a cada caso y de este modo ahorrar todavía más tiempo, especialmente si nuestro trabajo implica encadenar múltiples geoprocesos sobre un gran número de capas o fuentes de datos distintas.
Muy buen post, muchas gracias.