Как переключить видимость слоя в QGIS, используя Python?

12

Как я могу переключать видимость слоя в QGIS через Python API?

Подземье
источник

Ответы:

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)

Зак Ван
источник