Pythonを使用して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.