Sto cercando di creare un plug-in per caricare un compositore di stampa da file, generare un atlante ed esportare in immagine. Finora sono riuscito a caricare il modello ed esportarlo in immagine.
Non sono stato in grado di aggiungere nessuno dei livelli nella legenda (che sono anche nel toc) alla mappa esportata, il che si traduce in una mappa vuota e nessuna delle espressioni di campo funziona.
# 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)
Ecco uno snippet dal modello caricato che dovrebbe impostare l'atlante:
<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"/>
Non sono inoltre sicuro del modo migliore per aggiungere tutto il layer nel toc all'istanza di QgsMapRenderer ().
Grazie