วิธีสลับการแสดงเลเยอร์ใน QGIS โดยใช้ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.