Comment basculer la visibilité des couches dans QGIS en utilisant Python?

12

Comment basculer la visibilité des couches dans QGIS via l'API Python?

obscur
la source

Réponses:

11

Cela provient des documents QGIS, si vous exécutez 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) 

Je suppose que vous échangeriez simplement loadedLayer = i.addRasterLayer('c:\\data\\a_map.png')le calque que vous souhaitez masquer, que vous pourriez obtenir en utilisant quelque chose comme:

QgsMapLayerRegistry.instance().mapLayer(QString theLayerId)
Nathan W
la source
0

La réponse acceptée n'est pas disponible pour QGIS3. Dans QGIS3, j'utilise le code ci-dessous:

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

De plus, nous pouvons activer et désactiver tous les calques en:

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