En nuestra rutina de trabajo con QGIS es frecuente que necesitemos realizar el mismo proceso con muchos archivos diferentes o hacerlo periódicamente. Para evitar estas tareas repetitivas y monótonas podemos hacer uso de la programación, de modo que escribiendo unas pocas lineas de código podemos ejecutar una función al instante tantas veces como queramos. Para ello vamos a hacer uso de Python, un lenguaje de programación muy útil y sencillo en el cual están configurados todos los algoritmos espaciales de QGIS.

qgis_logo python_logo

En este ejemplo vamos a suponer que tenemos una gran cantidad de archivos vectoriales de entrada, y que queremos recortarlos conforme a otro shapefile que representa nuestra área de interés.

El método clásico es utilizar la interfaz de QGIS y, mediante la herramienta Clip, ir recortando las capas una a una. Sin embargo, cuando el número de archivos a procesar es muy elevado esto no es eficiente. Por ello, vamos a crear nuestro propio script en Python, el cual podremos volver a utilizar cuando nos sea necesario. Para esto, deberemos iniciar QGIS y abrir la Consola de Python. Aquí podemos usar el propio editor que nos proporciona QGIS o bien escribir el código en cualquier otro editor de texto y luego copiarlo o importar el archivo.

code_screen

IMPORTANTE: Hay que tener en cuenta que Python es sensible a las indentaciones (tabulaciones) y puede que en algún caso haya discordia entre el editor de QGIS y otro externo.

Llegados a este punto, ¡hay que empezar a programar! Las primeras lineas que escribiremos serán las siguientes:

code

Debemos importar la librería ‘os’ para poder utilizar algunas funciones internas del sistema operativo. Luego, almacenamos en variables las rutas hacia las carpetas que vamos a utilizar. Por supuesto, esas carpetas deben existir. Necesitamos una carpeta para los datos a procesar, otra para los archivos finales y una última para el shapefile que emplearemos como máscara de recorte (aunque esta podría estar en la carpeta raíz).

¿SABÍAS QUE…? Puedes ejecutar todas estas funciones directamente desde la consola de comandos, sin necesidad de iniciar QGIS. Para ello deberás importar las librerías necesarias y asegurarte de que todas las herramientas estás bien referenciadas.

A continuación, recorreremos con un bucle todos los ficheros de la carpeta origen y realizaremos la función de recorte.

code2

La función ‘os.listdir()’ crea una lista con todos los elementos de la ruta que pasemos como argumento. Luego, filtramos aquellos archivos que tengan extensión .shp (cada capa vectorial se compone de diversos fichero, pero el resto no nos interesa). Posteriormente creamos un diccionario en el que definimos los parámetros a emplear por el algoritmo, esto es, archivos de entrada, de salida y máscara de recorte. Finalmente, la función ‘processing.run()’ ejecuta el algoritmo. Debemos indicar qué algoritmo de QGIS vamos a utilizar y la variable en la que hemos definido los parámetros.

IMPORTANTE: cada algoritmo de QGIS tiene su estructura y parámetros propios. Además, la sintaxis es diferente entre las versiones 2 y 3 de QGIS. En este enlace podrás ver un listado de la mayoría de funciones de QGIS 3 y de su estructura.

Por último, podemos añadir los datos creados a nuestro proyecto de QGIS para visualizarlos.

code3

Al igual que antes, recorremos la carpeta de resultados y, mediante la función addVectorLayer() añadimos las capas al proyecto actual. Recuerda darle un nombre a cada capa; en este caso vamos a mantener el nombre del archivo cargado.

Esto es solo una pincelada de lo que se puede hacer en QGIS con Python. Una vez que te familiarices con estos métodos te darás cuenta del potencial que tiene combinar la programación y el GIS, y verás qué rápido y sencillo es optimizar tus rutinas de trabajo.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)

Cargando…

Formación de calidad impartida por profesionales

Curso Online QGIS Nivel Especialista  Curso-Online-Python-especialista-v2  Curso Online sistemas de infromacion geografica con tecnologia esri