Як переключити видимість шару в QGIS за допомогою Python?


12

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

Відповіді:


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)

Ваш перший код-код не є перемикачем, але явно встановлює цільовий шар невидимим.
Legato
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.