Cómo cambiar el renderizado de un ráster basado en pseudo color o palette a single band gray (PyQGIS)

En posts anteriores (1, 2, 3) ya se habían expresado algunas consideraciones sobre el renderizado de archivos ráster; especialmente dirigidas a cambiarlo desde single gray band a pseudo color. Sin embargo, el proceso inverso desde single gray band no había sido considerado.

Para ello, primero hay que instanciar la clase QgsSingleBandGrayRenderer pasándole como parámetros el provider y la banda. Luego, hay que sustituir ese renderer en la capa de partida y adicionarle el realce por contraste que se desee. El código propuesto es el siguiente:

layer=iface.activeLayer()

myGrayRenderer = QgsSingleBandGrayRenderer(layer.dataProvider(), 
                                           1)

layer.setRenderer(myGrayRenderer)

renderer = layer.renderer()
provider = layer.dataProvider()

layer_extent = layer.extent()
uses_band = renderer.usesBands()

myType=renderer.dataType(uses_band[0])

stats = provider.bandStatistics(uses_band[0], 
                                QgsRasterBandStats.All, 
                                layer_extent, 
                                0)

myEnhancement = QgsContrastEnhancement(myType)

contrast_enhancement = QgsContrastEnhancement.StretchToMinimumMaximum

myEnhancement.setContrastEnhancementAlgorithm(contrast_enhancement,True)
myEnhancement.setMinimumValue(stats.minimumValue)
myEnhancement.setMaximumValue(stats.maximumValue)

layer.renderer().setContrastEnhancement(myEnhancement)
layer.triggerRepaint()

Cuando se ejecuta en la Python Console de QGIS permite pasar desde este renderizado (pseudo color):

renderer1

al deseado (single band gray):

renderer2

Esta entrada fue publicada en PyQGIS, QGIS, SIG, 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