Modificando plugin de QGIS para determinar promedio ráster con GDAL

En el post anterior se establecieron los pasos para crear un plugin de QGIS que determinaba el promedio de un ráster utilizando la librería GDAL de Python. A continuación, modificaremos ligeramente el código de average_raster.py y el QDialog creado con el QtDesigner, para incorporar una QgsMapLayerComboBox (menú desplegable tipo persiana) que utiliza un filtro (QgsMapLayerProxyModel) para sólo aceptar ráster layers.

La porción modificada de average_raster.py (sin olvidar añadir los nuevos módulos de qgis.gui) incluye lo siguiente:

.
.
.
def initGui(self):
        """Create the menu entries and toolbar icons inside the QGIS GUI."""

        icon_path = ':/plugins/AverageRaster/AverageRaster.png'
        self.add_action(
            icon_path,
            text=self.tr(u'To calculate raster average'),
            callback=self.run,
            parent=self.iface.mainWindow())

        self.wcb = QgsMapLayerComboBox(self.dlg)
        self.wcb.setFixedWidth(220)
        self.wcb.move(140,40)
        self.wcb.setFilters( QgsMapLayerProxyModel.RasterLayer )
.
.
.

def run(self):
    """Run method that performs all the real work"""
    #My code starts here
    layer = self.wcb.currentLayer()
.
.
.
    self.dlg.show()
    # Run the dialog event loop
    result = self.dlg.exec_()
    # See if OK was pressed
    if result:
        # Do something useful here - delete the line containing pass and
        # substitute with your code.
        #My code starts here
        message = "the raster average of " + filename + " is = " + str(average) 
        QMessageBox.information(None, "Raster Average", message)
        #My code ends here

Observe que ahora no se crea la referencia a la capa activa sino a la capa actual que contiene la Combo Box (‘run function’).

En cuanto a las modificaciones del QDialog se tiene la imagen siguiente:

Qt-Designer

Observen que se le hizo espacio a la Combo Box pero como ésta se codifica en el archivo principal, no con el Qt Designer, entonces no existe visualización posible. Además, se desmarcó el botón ‘OK’ (‘Property Editor’) de la buttonBox porque el promedio ahora se determinará pulsando nuevamente en el icono del plugin (tal como se indica en el label).

Cuando se hace click en el icono del plugin tenemos lo siguiente:

plugin3

Al seleccionar ndvi.tif en el menú desplegable y hacer click en el icono del plugin se despliega el promedio del raśter; tal como se observa en la imagen siguiente:

plugin4

Cualquier selección hecha de la misma manera produce los resultados esperados en cuanto al promedio del ráster.

Esta entrada fue publicada en Plugin, PyQGIS, QGIS, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s