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

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