पायथन के साथ कई रैस्टर मानों में पारदर्शिता कैसे सेट करें


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

मैं 100% पारदर्शी होने के लिए दो मूल्यों (0 और 8) को कैसे परिभाषित कर सकता हूं?

जब मैं रेखापुंज मान 8 के साथ अंतिम ब्लॉक की आज्ञाओं को दोहराता हूं, तो लेयर पारदर्शिता से पहला मान (0) हटा दिया जाता है।

जवाबों:


10

मुझे यह अन्य धागा मिला जो सहायक था मैंने पायथन के साथ 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 में, रास्टर लेयर प्रॉपर्टीज में कर सकते हैं: यहाँ छवि विवरण दर्ज करें


हाँ, अजगर एक आवश्यकता है। मैंने एक प्लगइन बनाया है जो एक क्यूजीआईएस परियोजना के लिए स्थलाकृतिक नक्शे लोड करता है, जिसे एक शीट लाइन सिस्टम से चुना गया है।
स्टीफन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.