Comment définir la transparence sur plusieurs valeurs raster avec Python


11

Avec le code suivant, je peux définir 100% de transparence sur la valeur 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()

Comment définir deux valeurs (0 et 8) pour qu'elles soient 100% transparentes?

Lorsque je répète les commandes du dernier bloc avec la valeur raster 8, la première valeur (0) est supprimée de la transparence du calque.

Réponses:


10

J'ai trouvé cet autre fil qui était utile Comment définir la transparence des couches dans QGIS 2.0 avec Python? Il semble qu'il devrait y avoir un moyen plus court et plus efficace, mais j'ai testé cela et cela fonctionne:

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 est-il une exigence? Si je comprends ce que vous voulez, vous pouvez le faire dans l'interface utilisateur de QGIS, dans les propriétés de la couche raster: entrez la description de l'image ici


Oui, Python est une exigence. J'ai construit un plugin qui charge des cartes topographiques dans un projet QGIS, sélectionné à partir d'un système de ligne de feuille.
Stefan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.