Introducción a la Programación con Python en QGIS 3

Curso de ArcGIS Pro | Curso de QGIS | Curso de ArcGIS 10

Muchos profesionales del campo geoespacial no consideran la posibilidad de incluir la programación dentro de sus habilidades por ser algo complejo de aprender, veremos que ese no es el caso de QGIS.

Si bien, el programa QGIS fue desarrollado con el lenguaje C++, uno de los aspectos de su gran desempeño pero al mismo tiempo de la complejidad de su código. Los desarrolladores de QGIS han realizado un gran esfuerzo por facilitar la programación dentro de su entorno.

En los ejercicios que desarrollaremos a continuación veremos que programar en QGIS3 es sencillo.

Python es la solución

El lenguaje de Python surge como una solución para permitir al usuario acceder a las bibliotecas de QGIS y programar exitosamente.

Python es un lenguaje de rápido crecimiento y altamente demandado por sus aplicaciones en la ciencia, ingeniería, desarrollo web entre otros.

Una de las facetas más importantes de Python en el campo geoespacial, es que es ideal para scripting, es utilizado de esta forma por la mayoría de los programas comerciales y libres.

De esta forma, Python facilita el acceso y programación de los módulos de QGIS 3. La combinación de Python en QGIS 3 la denominamos PyQGIS3.

¿Cómo programar en Python?

Hay muchas formas de programar en Python dentro de QGIS3, sin embargo, la más común es utilizar la consola y el editor.

¿Cómo acceder a la consola?

Puede la acceder a la consola en el menú complementos > consola de Python, también con la combinación de las teclas ctrl + shift + space, o haciendo clic en el botón con el icono de Python.

Se despliega una caja de dialogo, con una línea de comandos en la parte inferior.

En la parte superior la consola nos ofrece información importante que nos facilitara la escritura de programas, nos sugiere utilizar iface acceder a la interfaz de la API de QGIS 3 o teclear help(iface) para más información.

Siguiendo la instrucción escriba en la consola help(iface) y luego enter, se despliega una descripción detallada de la Clase.

Note que la descripción comienza con la definición Class QgisInterface(…. Class puede ser traducido como Clase, esto se debe a que QGIS 3 es un programa desarrollado con programación orientada a objetos.

Vamos a probar algunos de los métodos que nos ofrece iface.

Manipulando los zoom desde la consola:

1.- Cargue varias capas que correspondan a la misma zona. Cualquier conjunto de capas que posea o de las que hemos utilizado en los artículos anteriores.

2.- Seleccione una de las capas, luego escriba en la consola:.

 iface.zoomToActiveLayer() 

Note como lo acerca a dicha capa. El efecto es mas notable si la capa activa (seleccionada en el panel) cubre una menor o mayor extensión que el resto de las capas. Repita el proceso con las otras capas.

3.- Para volver al acercamiento anterior utilice: iface.zoomToPrevious() o al siguiente con iface.zoomToNext().

Para mostrar la extensión de todas las capas utilice iface.zoomFull().

Mostrando mensajes:

Podemos desplegar cajas de dialogo de mensajes, por ejemplo ejecute: iface.openMessageLog().

Note que los métodos ejecutados terminan con paréntesis, dentro de ellos se colocan los argumentos del método. Hasta ahora hemos ejecutado métodos que no requieren argumentos.

A continuación vamos a desplegar la barra de mensajes con un texto informativo.

Primero, se crea un mensaje vacío y lo asignaremos a una variable:

mensaje = iface.messageBar()

Para desplegar el mensaje utilizamos el método pushMessage con tres argumentos, el texto que queremos mostrar, el tipo de mensaje (de advertencia, error, información, ejecución) y el tiempo que durara el mensaje:

Ejecute el siguiente código en la consola:

mensaje.pushMessage(“Estoy programando!!!”, 0, 5)

Incremente el valor del tipo de mensaje hasta 4:

Desplegando la tabla de atributos y propiedades de una capa

Hemos visto que iface puede reconocer la capa activa y acercar el mapa a ella. Podemos capturar la capa activa, es decir, obtendremos un objeto capa, específicamente de la clase QgsMapLayer.

Para consultar los atributos y métodos de la clase QgsMapLayer u otra, puedes hacerlo consultando la pagina oficial del API de QGIS3.

Si no cuenta con conexión a internet puede hacerlo directamente en la consola con help(QgsMapLayer).

1.- Captando la capa activa: seleccione una capa vectorial en el Panel de capas y ejecute en la consola:

capa= iface.activeLayer() 

Con este código la capa esta referenciada en la variable capa.

2.-Para desplegar la tabla de atributos, ingrese el código:

iface.showAttributeTable(capa)

Note como el método showAttributeTable recibe como argumento una capa vectorial y despliega la tabla de atributos.

3.-De igual forma, podemos desplegar las propiedades de la capa:

iface.showLayerProperties(capa)

NOTAS FINALES:

Como han podido ver la programación en QGIS 3 es sencilla, requiere un conocimiento básico de Python y tener a la mano el API de QGIS 3.

En la programación orientada a objeto solo requerimos capturar los objetos, luego podremos conocer sus atributos y ejecutar sus métodos.

La explicación detallada de los fundamentos y otros tips para programar escapan de los alcances del presente artículo, pero si deseas profundizar en este tema puedes tomar el curso de PyQGIS3 mediante este enlace Programación en QGIS3 con Python.

Autor: Luis Eduardo Pérez Graterol
Profesión: Ingeniero en Recursos Naturales
País: Venezuela
Web:www.mundocartogeo.blogspot.com