파이썬을 사용하여 QGIS에서 레이어 가시성을 토글하는 방법은 무엇입니까?


12

Python API를 통해 QGIS에서 레이어 가시성을 전환하려면 어떻게해야합니까?

답변:


11

QGIS => 1.5를 실행하는 경우 QGIS 문서에서 가져온 것입니다.

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)

첫 번째 코드 블록은 토글이 아니지만 대상 레이어를 보이지 않게 설정합니다.
레가토
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.