13 votos

Cómo establecer la transparencia a varios ráster de valores con Python

Con el siguiente código se puede establecer una transparencia del 100% a trama valor 0:

map=None

for lyr in QgsMapLayerRegistry.instance().mapLayers().values():
  if lyr.name() == "some_layer":
    map= lyr

tr=None

tr=QgsRasterTransparency()
tr.initializeTransparentPixelList(0)
map.renderer().setRasterTransparency(tr)
map.triggerRepaint()

Cómo puedo definir dos valores (0 y 8) para ser 100% transparente?

Cuando me repita los comandos del último bloque con trama valor de 8, el primer valor (0) se retira de la transparencia de la capa.

12voto

Ian Jacobs Puntos 4165

He encontrado este otro hilo que fue de ayuda ¿Cómo puedo configurar la capa de transparencia en QGIS 2.0 con Python? Parece que debería ser más corto y más eficiente manera, pero he probado esto y esto y funciona:

print 'Start'
active_layer = qgis.utils.iface.mapCanvas().currentLayer()
raster_transparency  = active_layer.renderer().rasterTransparency()
ltr = QgsRasterTransparency.TransparentSingleValuePixel()
ltr2 =  QgsRasterTransparency.TransparentSingleValuePixel()
tr_list = []
ltr.min = 0  # Or another value
ltr.max = 0  # Or another value
ltr.percentTransparent = 100  # Or another value
ltr2.min = 8  # Or another value
ltr2.max = 8  # Or another value
ltr2.percentTransparent = 100
tr_list.append(ltr)
tr_list.append(ltr2)

raster_transparency.setTransparentSingleValuePixelList(tr_list)

active_layer.triggerRepaint()  # Tried with iface.mapCanvas().refresh(), but it didn't work
print 'Finish'

3voto

user49191 Puntos 11

¿Python es un requisito? Si yo entiendo lo que usted quiere, usted puede hacer esto en el QGIS interfaz de usuario, en la trama de propiedades de la capa: enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X