PyQGIS - 如何取消选择和选择新图层

时间:2021-02-11 04:22:05

标签: python pyqgis

目标: 循环浏览 zip 和图层,并为每个图层打印一张新地图。

问题: 代码没有像它应该的那样选择新层。我注意到在控制台中,以下代码仅突出显示了图层面板中的预期图层,而不会在画布上激活它。 我错过了什么?

当前代码:

import time
from qgis.PyQt import QtGui

project = QgsProject.instance()
manager = project.layoutManager()
layout_list = manager.printLayouts()
for layout in layout_list:
    manager.removeLayout(layout)

for x in ["92007","92037"]:
    for type in ["Frontage Map", "Housing Stock Map", "FAR Map"]:
        zip = str(x)
        
        layout = QgsPrintLayout(project)
        layout.initializeDefaults()
        project.layoutManager().addLayout(layout)
        layout.setName(type+" - "+zip)
        
        layer = QgsProject.instance().mapLayersByName(type)[0]
        layer.setSubsetString("SITE_ZIP="+str(x))
        layer.selectByExpression("SITE_ZIP="+str(x))
        
        canvas = qgis.utils.iface.mapCanvas()
        time.sleep(5)
        canvas.refresh()
        time.sleep(5)
        canvas.zoomToSelected()
        time.sleep(5)
        canvas.refresh()
        time.sleep(5)
        layer.removeSelection()
        time.sleep(5)
        canvas.refresh()
        time.sleep(5)

        
        fp = "C://Users//Desktop//Zipcode - "+x+"\/"+type+" - "+x+".png"
        iface.mapCanvas().saveAsImage(fp)

0 个答案:

没有答案