Ich versuche, ein Plugin zu erstellen, um einen Druckkomponisten aus einer Datei zu laden, einen Atlas zu generieren und in ein Bild zu exportieren. Bisher konnte ich die Vorlage erfolgreich laden und in ein Bild exportieren.
Ich konnte keine der Ebenen in der Legende (die sich auch im toc befinden) zur exportierten Karte hinzufügen, was dazu führt, dass eine leere Karte und keiner der Feldausdrücke funktioniert.
# Get layers in the legend and append, must be a cleaner way to do this?
layers = self.iface.legendInterface().layers()
layerStringList = []
for layer in layers:
layerID = layer.id()
layerStringList.append(layerID)
# Add layer to map render
myMapRenderer = QgsMapRenderer()
myMapRenderer.setLayerSet(layerStringList)
myMapRenderer.setProjectionsEnabled(False)
# Load template
myComposition = QgsComposition(myMapRenderer)
myFile = os.path.join(os.path.dirname(__file__), 'MMR_Template.qpt')
myTemplateFile = file(myFile, 'rt')
myTemplateContent = myTemplateFile.read()
myTemplateFile.close()
myDocument = QDomDocument()
myDocument.setContent(myTemplateContent)
myComposition.loadFromTemplate(myDocument)
# Save image
myImagePath = os.path.join(os.path.dirname(__file__), 'come_on.png')
myImage = myComposition.printPageAsRaster(0)
myImage.save(myImagePath)
Hier ist ein Ausschnitt aus der geladenen Vorlage, mit dem der Atlas eingerichtet werden soll:
<Atlas hideCoverage="false" featureFilter="reference = '61922'" coverageLayer="desktop_search20130615160118593" fixedScale="true" composerMap="0" singleFile="false" filenamePattern=""reference"" enabled="true" filterFeatures="true" sortFeatures="true" sortKey="0" sortAscending="true" margin="1"/>
Ich bin mir auch nicht sicher, wie ich die gesamte Ebene im toc am besten zur Instanz von QgsMapRenderer () hinzufügen kann.
Vielen Dank
Vielleicht kann dies bei Ihnen funktionieren, um alle aktuellen Ebenen zu erhalten:
quelle