Objetos QgsProjectionSelectionWidget en un plugin de QGIS para reproyectar rásteres

En el post anterior se consideró el código para reproyectar un ráster mediante GDAL/PyQGIS ejecutado desde la Python Console. Adaptar ese código para ejecutarlo en un plugin de QGIS es aún más fácil porque existen clases que permiten filtrar las capas y los CRS.

Por ejemplo, el extracto del código en el plugin, que incluye el selector de la proyección (QgsProjectionSelectionWidget), sería el siguiente:

.
.
.
from qgis.gui import QgsMapLayerComboBox, QgsMapLayerProxyModel, QgsProjectionSelectionWidget
.
.
.
    def __init__(self, iface):
.
.
.
        self.wproj =  QgsProjectionSelectionWidget(self.dlg)
        self.wproj.move(220,50)
        self.wproj.setMinimumWidth(192)
.
.
.

    def reprojection(self):
        
        layer = self.wcb.currentLayer()
        
        provider = layer.dataProvider()

        source_path = " -of GTiff " + provider.dataSourceUri()
        target_path = self.dlg.lineEdit.text()
        
        CRS = layer.crs()
        source_epsg = CRS.postgisSrid()
        new_espg = self.wproj.crs().postgisSrid()
        target_epsg = " -t_srs EPSG:" + str(new_espg)
        
        cmd = "gdalwarp -overwrite -s_srs EPSG:" + \
                                str(source_epsg) + \
                                     target_epsg + \
                                     source_path + \
                                     " " + \
                                     target_path

        print cmd
        
        os.system(cmd)
        
    def run(self):
        """Run method that performs all the real work"""
.
.
.

El plugin en operación y con el raster ya reproyectado se observa a continuación:

plugin

Anuncios
Esta entrada fue publicada en GDAL, 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