QGIS está de moda y esto no es porque sí

La reciente actualización a QGIS 2.16.3 ‘Nødebo trae consigo muchas novedades y mejoras, desde nuevas herramientas de proveedores externos como GRASS, a simbologías de representación más complejas que mejoran sustancialmente los productos cartográficos. Este es sin duda un buen momento para engancharse al tren de QGIS,  pero no tienes porque hacerlo en el vagón de cola. QGIS tiene diversas funcionalidades avanzadas entre la que quizás más destaque sea su completa API para programación y scripting que nos permite acceder a las “tripas” de la aplicación para poder generar nuestras propias herramientas y geoalgoritmos. Como ya he comentado en alguna entrada anterior, iniciarse en estas cuestiones no es baladí. La curva de aprendizaje es bastante dura y en ocasiones puede resultar frustrante.

Pero no todo son penurias y dificultades. QGIS nos ofrece a través del plugin processing, desarrollado por Víctor Olaya, una manera fácil y asequible para desarrollar nuestras propias herramientas. Al igual que otras adaptaciones de herramientas SIG a lenguajes de programación QGIS se sirve de Python, uno de los lenguajes más sencillos de aprender hoy en día, como lenguaje de desarrollo. A esto hay que sumar la versatilidad del módulo processing a la hora de diseñar interfaces para el diseño de herramientas propias y la simplicidad de comunicación entre los elementos de la interfaz y los geoprocesos que compondrán nuestra herramienta.

De hecho, es posible desarrollar herramientas sin tan siquiera usar una sola línea de código. Podemos usar la sintaxis de processing para crear una herramienta en la que podamos especificar capas de entrada, valores de parámetros y capas de salida; y combinar esto con algunos geoprocesos ya implementados y plenamente disponibles. Si no me crees sigue los siguientes pasos en los que se crea un herramienta que nos permite crear anillos entorno a las entidades de una capa vectorial.

Paso 1 – Abrir la ventana de edición de scripts en processing

QGIS

qgis

##Capa_salida=output vector

##Distancia_Min=number 10

##Distancia_Max=number 100

bufferMin = processing.runalg(“qgis:fixeddistancebuffer”,Capa_entrada,Distancia_Min,5,False,None)

bufferMax = processing.runalg(“qgis:fixeddistancebuffer”,Capa_entrada,Distancia_Max,5,False,None)

processing.runalg(“qgis:difference”,bufferMax[‘OUTPUT’],bufferMin[‘OUTPUT’],False,Capa_salida)

Como ves  son tan solo 7 líneas de código. Las 4 primeras, que van precedidas de ##, sirven para diseñar la interfaz. Las 3 siguientes invocan sendos geoprocesos. En esencia creamos un buffer mayor y uno menor, y eliminamos el menor del mayor para crear el anillo. Esto es posible gracias a los geoprocesos ya implementados, en este caso procedentes directamente de QGIS. Y este es el resultado:

qgis

Pruébalo, debería funcionar sin problema. En cualquier caso esto es tan solo la punta del iceberg. Hay mucho, pero mucho más que saber de estas cuestiones. Podemos crear herramientas realmente complejas o incluso nuevos plugin combinando diversas funcionalidades disponibles tanto en la API de QGIS como en otros módulos de Python.

Autor: Marcos Rodrigues.

Descubre más en nuestro blog sobre PyQGIS

curso-PyGIS-Python para QGIS
Curso PyQGIS: Programación de Scripts en Python para QGIS

¡Comenta desde tu cuenta de Facebook!

Dejar respuesta

Please enter your comment!
Please enter your name here