Saya mencoba membuat plugin untuk memuat komposer cetak dari file, menghasilkan atlas dan mengekspor ke gambar. Sejauh ini saya telah berhasil memuat template dan mengekspornya ke image.
Saya tidak dapat menambahkan lapisan apa pun dalam legenda (yang juga ada dalam toc) ke peta yang diekspor, yang menghasilkan peta kosong dan tidak ada ekspresi bidang yang berfungsi.
# 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)
Berikut ini cuplikan dari template yang dimuat yang seharusnya mengatur atlas:
<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"/>
Saya juga tidak yakin cara terbaik untuk menambahkan semua layer di toc ke instance QgsMapRenderer ().
Terima kasih
Mungkin ini bisa bekerja pada Anda untuk mendapatkan semua lapisan saat ini:
sumber