पायथन का उपयोग करके QGIS में परत की दृश्यता को कैसे टॉगल करें?


12

मैं पायथन एपीआई के माध्यम से QGIS में परत दृश्यता को कैसे टॉगल कर सकता हूं?

जवाबों:


11

यह QGIS डॉक्स से है, यदि आप QGIS => 1.5 चला रहे हैं

from PyQt4 import QtCore, QtGui
from qgis import core, gui
i = qgis.utils.iface
# load a georeferenced raster layer
loadedLayer = i.addRasterLayer('c:\\data\\a_map.png')
# get legend
legend = i.legendInterface()
# check current visibility
legend.isLayerVisible(loadedLayer)
# set visibility off 
legend.setLayerVisible(loadedLayer, False)
# and on again!
legend.setLayerVisible(loadedLayer, True) 

मुझे लगता है कि आप केवल loadedLayer = i.addRasterLayer('c:\\data\\a_map.png')उस परत के साथ स्वैप करेंगे जिसे आप छिपाना चाहते हैं, जिसे आप कुछ इस तरह उपयोग कर सकते हैं:

QgsMapLayerRegistry.instance().mapLayer(QString theLayerId)

0

स्वीकृत उत्तर QGIS3 के लिए उपलब्ध नहीं है। QGIS3 में, मैं नीचे दिए गए कोड का उपयोग करता हूं:

QgsProject.instance().layerTreeRoot().findLayer(lyr.id()).setItemVisibilityChecked(False)

इसके अलावा, हम सभी परतों को चालू और बंद कर सकते हैं:

bool = True # or False
root = QgsProject.instance().layerTreeRoot()
allLayers = root.layerOrder()
for layer in allLayers:
    root.findLayer(layer.id()).setItemVisibilityChecked(bool)


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