파이썬으로 여러 래스터 값에 투명도를 설정하는 방법 0에 100 % 투명도를 설정할 수

다음 코드를 사용하면 래스터 값 0에 100 % 투명도를 설정할 수 있습니다.

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)이 레이어 투명도에서 제거됩니다.



답변

이 다른 스레드가 도움이 되었습니까 ? Python으로 QGIS 2.0에서 레이어 투명도를 설정하는 방법은 무엇입니까? 더 짧고 효율적인 방법이 있어야하는 것처럼 보이지만 이것을 테스트하면 작동합니다.

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'


답변

파이썬은 필수 요건입니까? 원하는 것을 이해하면 QGIS UI의 래스터 레이어 속성에서이를 수행 할 수 있습니다.
여기에 이미지 설명을 입력하십시오


답변