วิธีการตั้งค่าความโปร่งใสให้กับหลายค่าแรสเตอร์ด้วย Python


11

ด้วยรหัสต่อไปนี้ฉันสามารถตั้งค่าความโปร่งใส 100% เป็นค่า raster 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 UI ในคุณสมบัติเลเยอร์แรสเตอร์: ป้อนคำอธิบายรูปภาพที่นี่


ใช่ Python เป็นข้อกำหนด ฉันได้สร้างปลั๊กอินที่โหลดแผนที่ภูมิประเทศไปยังโครงการ QGIS ที่เลือกจากระบบชีตไลน์
Stefan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.