Francisco Raga López

2016

Desarrollo de Plugins usando PyQgis para Qgis

¿¿Quién es este tipo??

Francisco Raga López

Ingeniero en Cartografía y Geodesia

Analista / Desarrollador de Software Gis

Índice

  • Herramientas necesarias
  • Procedimiento
  • Resultado

Herramientas Necesarias

  • Qt Designer:  QGIS se escribe utilizando el marco de Qt. 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 de  OSGeo4W.

  • Python Bindings para Qt : Para crear plugins necesitamos la herramienta de comandos pyrcc4.Para eso necesitamos descargar el paquete de OSGeo4W.

 

Instalador OSGeo4W  ( 32 bit o 64 bit )

Herramientas Necesarias

 

  • Un editor de texto o un Python IDE: Aquí podemos elegir programas como Notepad ++, aunque yo recomiendo emplear eclipse con el plugin PyDev.

 

 

  • 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.

 

Link PyDev

http://www.eclipse.org/

https://plugins.qgis.org/plugins/pluginbuilder/

https://plugins.qgis.org/plugins/plugin_reloader/

Al lio!!

  1. Creamos la estructura
  2. Compilamos
  3. Creamos el Interfaz
  4. Código
  5. Resultado

Resumen pasos necesarios:

1. Creamos la estructura

1

2

1. Creamos la estructura

3

Windows

 

Mac

 

Linux

 

c:\Users\username\.qgis2\python\plugins
/Users/username/.qgis2/python/plugins
/home/username/.qgis2/python/plugins

Rutas

1. Creamos la estructura

4

  C:\Users\<username>\.qgis2\python\plugins\GetLayers

2. Compilamos

Necesitamos compilar el fichero de recursos resources.qrc

  1. Abrimos la consola de OSGeo4W
  2. Buscamos el directorio del plugin :
    1.  
    2. Escribimos:
make
C:\Users\<username>\.qgis2\python\plugins\GetLayers

3. Creamos el Interfaz

1

Seleccionamos el plugin en la configuración de Plugin Reloader

2

3. Creamos el Interfaz

Abrimos Qt Designer y dejamos Qgis abierto

  • Label
  • boton
  • Combobox

4. Código

Descarga Cartografìa

Abrimos el fichero get_layers.py y modificamos el método run()

    def run(self):
        """Run method that performs all the real work"""
        #Populate Combobox
        layers = self.iface.legendInterface().layers()
        layer_list = []
        layer_list = [layer.name() for layer in layers]
        self.dlg.comboBox.clear()  
        self.dlg.comboBox.addItems(layer_list)	
        # show the dialog
        self.dlg.show()
        def layer_field():
            # Identify selected layer by its index
	    selectedLayerIndex = self.dlg.comboBox.currentIndex()
	    selectedLayer = layers[selectedLayerIndex]
	    self.iface.mapCanvas().setExtent(selectedLayer.extent())
	    self.iface.mapCanvas().refresh()		
        #Signal	
        self.dlg.pushButton.clicked.connect(layer_field)

5.Resultado

Preguntas?

Francisco Raga López

 

       franka1986@gmail.com

       https://github.com/All4Gis

       @fran_raga

Gracias por su atención

"Emplear software libre es más divertido si participamos en él !! "