Як встановити прозорість для кількох растрових значень за допомогою Python


11

За допомогою наступного коду я можу встановити прозорість на 100% на значення растру 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()

Як я можу визначити два значення (0 і 8), щоб вони були 100% прозорими?

Коли я повторюю команди останнього блоку зі значенням растрового 8, перше значення (0) видаляється з прозорості шару.

Відповіді:


10

Я знайшов цю іншу нитку, яка була корисною. Як встановити прозорість шару в QGIS 2.0 за допомогою Python? Здається, має бути коротший і ефективніший спосіб, але я перевірив це, і це працює:

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 вимогою? Якщо я зрозумів, що ви хочете, ви можете зробити це в інтерфейсі QGIS, у властивості шару растрового: введіть тут опис зображення


Так, Python - це вимога. Я створив плагін, який завантажує топографічні карти до проекту QGIS, вибраного з системи ліній листів.
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.