AttributeError:“QgsComposition”对象没有属性“setMapCanvas”

2024-10-03 23:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图保存地图和它的图例使用QGis地图编辑器。我已经有模板了。在

这是用python编写的代码。在

layers =iface.legendInterface().layers()
canvas=iface.mapCanvas()

for layer in layers:
# myFile = r"C:\Users\craj\Downloads\GraduatedTheme.qpt"
    myFile = r"C:\Users\craj\Downloads\GraduatedTheme.qpt"
    myTemplateFile = file(myFile, 'rt')
    myTemplateContent = myTemplateFile.read()
    myTemplateFile.close()
    myDocument = QDomDocument()
    myDocument.setContent(myTemplateContent, False)
    newcomp = iface.createNewComposer()
    newcomp.composition().loadFromTemplate(myDocument)
    newcomp.composition().refreshItems()
    for a in iface.mapCanvas().layers():
        iface.legendInterface().setLayerVisible(a, False)
    iface.legendInterface().setLayerVisible(layer, True)
    newcomp.composition().refreshItems()
    map_item = newcomp.composition()
    map_item.getComposerItemById('map')
    map_item.setMapCanvas(canvas)
    map_item.zoomToExtent(canvas.extent())
    newcomp.composition().refreshItems()
    legend_item = newcomp.composition().getComposerItemById('legend')
    legend_item.updateLegend()
    newcomp.composition().refreshItems()
    imagePath ='C:/Users/craj/Downloads/'+layer.name()+'.png'
    image = newcomp.composition().printPageAsRaster(0)
    image.save(imagePath,'png')

执行Python代码时出错:

^{pr2}$

Tags: layermaplayersdownloadsitemmyfileuserscanvas
1条回答
网友
1楼 · 发布于 2024-10-03 23:29:20

如果你看docs,在QgsComposition上没有{}。这个方法在其他几个类中,比如^{}。基于调用getComposerItemById()的代码,您可能需要的是:

composition = newcomp.composition()
map_item = composition.getComposerItemById('map')
map_item.setMapCanvas(canvas)

相关问题 更多 >