So legen Sie mit Python Transparenz für mehrere Rasterwerte fest


11

Mit dem folgenden Code kann ich 100% Transparenz auf den Rasterwert 0 setzen:

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()

Wie kann ich zwei Werte (0 und 8) so definieren, dass sie 100% transparent sind?

Wenn ich die Befehle des letzten Blocks mit dem Rasterwert 8 wiederhole, wird der erste Wert (0) aus der Ebenentransparenz entfernt.

Antworten:


10

Ich habe diesen anderen Thread gefunden, der hilfreich war. Wie stelle ich die Layertransparenz in QGIS 2.0 mit Python ein? Es scheint, dass es einen kürzeren und effizienteren Weg geben sollte, aber ich habe dies getestet und es funktioniert:

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

Ist Python eine Voraussetzung? Wenn ich verstehe, was Sie wollen, können Sie dies in der QGIS-Benutzeroberfläche in den Eigenschaften der Rasterebene tun: Geben Sie hier die Bildbeschreibung ein


Ja, Python ist eine Voraussetzung. Ich habe ein Plugin erstellt, das topografische Karten in ein QGIS-Projekt lädt, das aus einem Blattliniensystem ausgewählt wurde.
Stefan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.