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


11

다음 코드를 사용하면 래스터 값 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)이 레이어 투명도에서 제거됩니다.

답변:


10

이 다른 스레드가 도움이 되었습니까 ? 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'

2

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


예, 파이썬은 필수입니다. 시트 라인 시스템에서 선택한 지형도를 QGIS 프로젝트에로드하는 플러그인을 만들었습니다.
Stefan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.