目标: 循环浏览 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)