Python es un lenguaje de programación de código abierto, que destaca porque permite automatizar de forma fácil y eficiente tareas rutinarias, que para un profesional GIS puedes ser de mucha utilidad. Además desde QGIS, uno de los programas de GIS de software libre más importantes, podemos trabajar con ello sin problemas.

Para mostrar el potencial de manejar Python desde QGIS, en este post haremos un sencillo ejemplo en análisis exploratorio de datos , en el que cargaremos una capa de polígonos vectoriales que represente las Provincias de España y utilizaremos secuencias de comandos de Python para acceder a las propiedades y las entidades de la capa. Para ello, se realiza lo siguiente:

En QGIS, vaya a Capas -> Agregar capa. Seleccione la capa y haga clic en Aceptar.

 

Se cargará la capa ESP_adm2 en QGIS.

QGIS proporciona una consola integrada desde donde se puede escribir comandos de Python y obtener el resultado directamente en el lienzo de QGIS. Esta consola es una excelente manera de aprender secuencias de comandos y también para hacer un procesamiento rápido de datos.

Abra la Consola Python yendo a Complementos -> Consola Python.

Se verá un nuevo panel abierto en la parte inferior del lienzo QGIS. Se puede leer un mensaje como “>>>” en la parte inferior donde puede escribir comandos. Para interactuar con el entorno QGIS, debemos usar la clase iface. Para acceder a la capa actualmente activa en QGIS, vamos a escribir lo siguiente y presionar Entrar.

lyr = iface.activeLayer()

Este comando obtiene la referencia a la capa cargada actualmente y lo almacena en la variable lyr.

Si se escribe lyr en la consola y se presiona Entrar, la consola devuelve el objeto que representa a la capa actualmente activa en QGIS.

Una forma rápida de conocer las funciones que tiene una clase es ejecutar el comando dir () de Python, el cual muestra todos los métodos disponibles para la clase de cualquier objeto. Esto es útil cuando no está seguro de qué funciones están disponibles para el objeto.

dir(lyr)

 

Un aspecto importante antes de realizar cualquier tipo de análisis exploratorio de la información que contiene una capa geográfica es conocer las propiedades de esta. Para ello, a partir de la capa almacenada en la variable lyr, utilizamos diversas funciones que nos devolverán información básica de una capa.

  • Nombre de la capa en QGIS:

lyr.name()

  • Extent de la capa:

lyr.extent()

  • Sistema de coordenadas:

lyr.crs()

  • Formato de la capa:

lyr.dataProvider().storageType()

  • Uri donde está almacenada la capa:

lyr.dataProvider().dataSourceUri()

  • Tipo de geometría:

lyr.dataProvider().wkbType()

Una vez que conocemos las propiedades de la capa, podemos conocer más a fondo las entidades que la conforman. Para ello utilizaremos la función getFeatures(), que proporciona la referencia a todas las entidades de una capa. En nuestro caso, cada entidad será una de las provincias de España. Para ello aplicamos dicha función a la variable lyr, que a su vez almacenamos en otra variable llamada features.

features = lyr.getFeatures()

La variable features en un contenedor iterable con las entidades de la capa vectorial. Para poder manejar mejor las entidades que componen la capa, vamos a convertirlo en una lista con el comando list() de Python 3 y lo guardamos en una variable llamada de la misma forma, features.

features = list(features)

Para poder ver en la consola la lista, ejecutamos la variable features:

Vemos que al ejecutar la variable de tipo lista llamada features, la consola de QGIS nos imprime la lista con las entidades de la capa, es decir, un listado de objetos de tipo entidad. Estas entidades tienen una parte asociada con la geometría y otra con sus atributos.

Con el objeto de tipo lista llamada features, podemos explorar algunas propiedades básicas de la misma, como, por ejemplo, el número de entidades que tiene la capa usando el comando len() de Python 3.

len(features)

Como podemos ver, el resultado es 52, es decir, el número de provincias de España.

Vamos a seguir trabajando con la lista features. Para acceder a cualquier entidad dentro la lista, podemos hacerlo mediante un índice, es decir, indicando la posición de la entidad dentro de la lista. Por ejemplo, vamos a obtener el primer elemento de la lista y lo vamos a guardar en una variable llamada feature:

feature = features[0]

 

Recordemos que, en una lista, el primer elemento tiene la posición 0, el segundo la posición 1… y así sucesivamente.

A continuación, vamos a obtener el nombre de la primera entidad guardada en la variable feature accediendo a su atributo en el campo «NAME_2», el atributo que nos dice el nombre de la provincia:

feature [«NAME_2»]

Como podemos ver, la primera entidad de la lista es la provincia de Almería.

También podríamos acceder a la geometría de la entidad guardada en la variable feature, a través del método geometry().

feature.geometry()

El resultado nos devuelve un objeto de tipo geometría, el cual nos indica el tipo de geometría que tiene la entidad y el listado de coordenadas que componen el polígono (o el tipo de geometría que sea).

Esto es solo un ejemplo de lo que se puede hacer con QGIS + Python. Estos scripts con algún conocimiento más de Python se puede automatizar muchas tareas, incrementando muy significativamente la eficiencia de nuestro trabajo. Para profundizar más, os animamos a realizar el curso online de “Programación en QGIS con Python (PyQGIS)”