Come impostare la trasparenza su più valori raster con Python


11

Con il seguente codice posso impostare il 100% di trasparenza sul valore raster 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()

Come posso definire due valori (0 e 8) per essere trasparenti al 100%?

Quando ripeto i comandi dell'ultimo blocco con valore raster 8, il primo valore (0) viene rimosso dalla trasparenza del livello.

Risposte:


10

Ho trovato quest'altro thread che è stato utile Come posso impostare la trasparenza dei livelli in QGIS 2.0 con Python? Sembra che ci dovrebbe essere un modo più breve ed efficiente, ma ho provato questo e funziona:

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'

2

Python è un requisito? Se capisco cosa vuoi, puoi farlo nell'interfaccia utente di QGIS, nelle proprietà del livello raster: inserisci qui la descrizione dell'immagine


Sì, Python è un requisito. Ho creato un plug-in che carica mappe topografiche in un progetto QGIS, selezionato da un sistema di linee di fogli.
Stefan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.