QGIS के परत पैनल में डिफ़ॉल्ट रूप से पारदर्शिता स्लाइडर दिखा रहा है?


13

क्या लेयर विंडो में डिफ़ॉल्ट रूप से एक ट्रांसपेरेंसी स्लाइडर दिखाया जाना संभव है, अर्थात सीधे लेयर-प्रॉपर्टीज़ के माध्यम से प्रत्येक लेयर को मैन्युअल रूप से सक्षम करने के बजाय, एक नई लेयर जोड़ने के बाद?

जवाबों:


11

इसका संक्षेप में QGIS - डेवलपर फोरम में उल्लेख किया गया था जहाँ आपको अपनी परत के लिए एम्बेडेड विजेट को सक्षम करने के लिए QgsMapLayer :: setCustomPropertylayer का उपयोग करने की आवश्यकता है । फिर हम एक itemAddedईवेंट जोड़ सकते हैं ताकि जब भी कोई लेयर जोड़ी जाए तो यह अपने आप ट्रांसपेरेंसी विजेट के साथ दिखाई दे।

तो आप पायथन कंसोल में निम्नलिखित जैसे कुछ का उपयोग कर सकते हैं :

def transparency_slider():
    for layer in QgsMapLayerRegistry.instance().mapLayers().values():
        if layer.customProperty("embeddedWidgets/count") != 1 or layer.customProperty("embeddedWidgets/0/id") != u'transparency':
            layer.setCustomProperty("embeddedWidgets/count", 1)
            layer.setCustomProperty("embeddedWidgets/0/id", "transparency")         
        else:
            pass
        qgis.utils.iface.legendInterface().refreshLayerSymbology(layer)

# Connect "itemAdded" event to "transparency_slider" function
legend = qgis.utils.iface.legendInterface()
legend.itemAdded.connect(transparency_slider)

Win7 64-बिट के लिए QGIS 2.18.3 पर परीक्षण किया गया।


उदाहरण:

अजगर सांत्वना और आकार जोड़ने से पहले कोड सम्मिलित करना:

इससे पहले

परिणाम:

उपरांत


यह बढ़िया है! यदि आप पारदर्शिता स्लाइडर के बिना बाद की वेक्टर परतों में लाना चाहते हैं तो आप इसे कैसे बंद करेंगे?
मार्टिन ह्युगी

1
@ मार्टिनहुगी - आप सिर्फ legend.itemAdded.disconnect(transparency_slider)अजगर सांत्वना में टाइप कर सकते हैं ;)
जोसफ

@ मार्टिनहुगी - सबसे स्वागत है, ख़ुशी से ऐसा होता है =)
जोसफ

1
बहुत बढ़िया स्क्रिप्ट! क्या QGIS को पुनरारंभ करते समय भी इसे रखने का कोई तरीका है या क्या आपको हर पुनरारंभ पर स्क्रिप्ट का प्रदर्शन करना है?
ब्लैबथ

@poellinf - जैसा कि इस पोस्ट में बताया गया है: क्या QGIS प्रोजेक्ट खोलने पर एक पायथन स्क्रिप्ट चलाने का एक तरीका है? , आप या तो एक स्टार्टअप ओडीएफ स्क्रिप्ट बना सकते हैं (जो स्क्रिप्ट को हर बार QGIS शुरू करता है) या एक प्रोजेक्ट मैक्रो (जो केवल आपके प्रोजेक्ट पर चलता है) बना सकता है। किसी भी विधि का उपयोग करते हुए, आपको जोड़ना होगा import qgis; from qgis.core import QgsMapLayerRegistryआपकी स्क्रिप्ट में :)
जोसेफ

6

रैस्टर ट्रांसपेरेंसी नामक एक प्लगइन है, जैसा कि नाम से पता चलता है, चयनित रास्टर परत की पारदर्शिता को बदलने के लिए स्लाइडर्स के साथ एक डॉकेबल पैनल खोलेगा।

प्लगइन्स पर जाएं> प्लग इन प्रबंधित करें और इंस्टॉल करें - इसे ढूंढें और इंस्टॉल करें, आपके टूलबार पर एक नया संबद्ध आइकन दिखाई देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.