Python ile çoklu tarama değerlerine saydamlık nasıl ayarlanır?


11

Aşağıdaki kodla raster değeri 0'a% 100 şeffaflık ayarlayabilirim:

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

İki değeri (0 ve 8)% 100 şeffaf olarak nasıl tanımlayabilirim?

Raster değeri 8 olan son bloğun komutlarını tekrarladığımda, ilk değer (0) katman saydamlığından kaldırılır.

Yanıtlar:


10

Yararlı olan bu diğer iş parçacığını buldum Python ile QGIS 2.0'da katman saydamlığını nasıl ayarlayabilirim? Daha kısa ve daha verimli bir yol olmalı gibi görünüyor, ama bunu test ettim ve işe yarıyor:

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 bir gereklilik mi? Ne istediğinizi anlarsam, bunu QGIS kullanıcı arayüzünde, raster katmanı özelliklerinde yapabilirsiniz: resim açıklamasını buraya girin


Evet, Python bir gerekliliktir. Bir sayfa hattı sisteminden seçilen bir QGIS projesine topografik haritalar yükleyen bir eklenti oluşturdum.
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.