Los Plugins de QGIS extienden las funcionalidades del mismo. Nosotros podemos escribir desde herramientas muy simples hasta herramientas más sofisticadas.
Visión General
En esta entrada crearemos un plugin muy sencillo para “mergear” dos layers cargados en el canvas en un solo, creando un layer temporal.
Herramientas necesarias
Las herramientas que necesitamos para el desarrollo de nuestro plugin son:
- Qt Designer: QGIS se escribe utilizando el marco deQt . Para el desarrollo de Plugins, usaremos una aplicación llamada Qt Designer para diseñar la interfaz para nuestro plugin. Se encuentra dentro del paquete deOSGeo4W.
- Python Bindings para Qt: Para crear Plugins necesitamos la herramienta de comandos pyrcc4. Para eso necesitamos descargar el paquete de OSGeo4W.
- Un editor de texto o un Python IDE: Aquí podemos elegir programas como Notepad ++, aunque debemos recordar que Python es sensitivo por lo que tenemos que ir con cuidado con las tabulaciones.
- Plugin Builder: Con este plugin podemos crear toda la estructura necesaria de nuestro desarrollo.
- Plugin Reloader: Necesaria para recargar nuestro plugin sin necesidad de cerrar y abrir Qgis.
Creamos la estructura de nuestro Plugin
Abrimos Qgis y vamos a Complementos y seleccionamos Plugin Builder:
A continuación, se nos abrirá un dialogo y simplemente tenemos que ir rellenando la información que se nos pide:
En la siguiente pantalla seleccionamos el tipo de plugin que queremos, en este caso será un botón en la barra de herramientas junto con un dialogo:
Rellenamos el resto de pantallas hasta que nos pida donde guardar nuestro plugin.
Esta ruta dependerá del sistema operativo que tengamos:
<strong>Windows: </strong>c:\Users\username\.qgis2\python\plugins
<strong>Mac: </strong>/Users/username/.qgis2/python/plugins
<strong>Linux: </strong>/home/username/.qgis2/python/plugins
Donde tendremos que reemplazar “username” por nuestro usuario. Una vez guardado se nos mostrara la siguiente pantalla indicándonos la ruta y que todo ha salido correctamente.
Podemos observar que el plugin se ha guardado en:
C:\Users\francisco\.qgis2\python\plugins\mergelayers
Compilación
El siguiente paso es compilar el fichero de recursos resources.qrc para ello debemos lanzar la consola de OSGeo4W, y dirigirnos donde tenemos nuestro plugin y ejecutar el comando make.
cd c:\Users\username\.qgis2\python\plugins\mergelayers
Creación del interfaz
Para la creación del interfaz, abrimos QT Designer y en este caso añadimos dos labels, dos desplegables y un botón el cual realizaría el mergeo entre los layers seleccionados en los desplegables.
Para ello, abrimos nuestro fichero *.ui “merge_layers_dialog_base.ui” y le añadimos los objetos mencionados con anterioridad.
Código de nuestro plugin
Una vez tenemos todo solo nos falta algo muy importante y es que nuestro plugin funcione.
Para ello, abrimos Qgis y lo primero que debemos es seleccionar en la configuración del plugin descargado “Plugin Reloader”, nuestro plugin.
Una vez seleccionado deberemos cargar algunos layers, para poder realizar y comprobar nuestro desarrollo, por ejemplo podemos descargar información de España desde la siguiente web.
Ahora, por ultimo, solo tenemos que escribir nuestro código. Para ello, nos dirigimos al archivo “merge_layers.py” y en concreto al método run () donde escribiremos nuestro código.
Donde la función merge_selected () nos realizara el proceso con los layers seleccionados en los desplegables y la última línea es la señal al botón, para que ejecute dicha función
self.dlg.btn_merge.clicked.connect(merge_selected)
Resultado
Para ampliar los conocimientos y realizar Plugins más sofisticados, recordad que podéis apuntaros al curso de desarrollo de Plugins para Qgis, donde toda esta información será ampliada.
Muy Buenas Noches, Disculpe soy estudiante de Ingeniería Civil, En la Ucla Venezuela y estoy trabajando La Tesis en este tema, Creo un Complemento Para Qgis, me gustaría saber si es posible que me pueda proporcionar material que me ayude a entender mejor lo que seria PyQgis y como crear el complemento, trabajar con el algebra de mapas, todo lo referente a lenguaje de programación.
Buenos días José,
Nos hemos puesto en contacto con usted vía email, esperamos su respuesta.
Un saludo.
Buenas noches soy estudiante de ingeniería topografica de la universidad del Valle Cali Colombia, quisiera saber si existe algúna forma de abrir qgis desde un scrip en phyton, gracias por la atencikn
Buenos días Carlos,
Concretamente lo que está preguntando no existe, lo que si se puede hacer con QGIS es justo la acción al contrario, abrir un Script de Python en QGIS.
Un saludo.
De mucha ayuda, es posible que se tenga una guía similar para QGIS 3.4 ya que cambio el procesos y la sintaxis de python 3
Hola, necesito información sobre la impartición de cursos sobre elaborar plugins para Qgis, necesito elaborar un plugins que me permita obtener indices e información de imágenes raster (satelitales).
saludos
Buenos días Marcelo,
Le hemos mandado información de nuestro curso de Desarrollo de Plugins, reciba un cordial saludo.
buenos días , tengo un problema al abrir un plugin que fue creado en windows en una mac, me dice que tiene problemas con su método class factory y que no encuentra el archivo gdal, podrían hablarme de alguna solución para esto?
Buenos días, le hemos mandado un correo con la información de nuestro curso de desarrollo de plugins con PyQGIS, un saludo.
exelente sirvio mucho
Buenas noches. Gusto en saludarlos, tengo el problema en un script pyqgis, en la funcion de conversion to_dms no me funciona ej. ‘ to_dms(6.1545681, ‘x’, 3) ‘ me sale error en la x entre apostrofe, el fin es llenar una tabla de atributo mediante transformciones, gracias por su respuesta.
Buenos días, le mandaremos la información del curso. Un saludo.