ฉันพยายามสร้างปลั๊กอินเพื่อโหลดผู้แต่งเพลงจากไฟล์สร้างแอตลาสและส่งออกไปยังรูปภาพ จนถึงตอนนี้ฉันประสบความสำเร็จในการโหลดเทมเพลตและส่งออกไปยังรูปภาพ
ฉันไม่สามารถเพิ่มเลเยอร์ใด ๆ ในตำนาน (ซึ่งอยู่ใน toc) ลงในแผนที่ที่ส่งออกซึ่งส่งผลให้แผนที่ว่างเปล่าและไม่มีการแสดงออกของฟิลด์ใดทำงาน
# 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)
นี่คือตัวอย่างจากเทมเพลตที่โหลดซึ่งควรตั้งค่าแอตลาส:
<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"/>
ฉันไม่แน่ใจในวิธีที่ดีที่สุดในการเพิ่มเลเยอร์ทั้งหมดใน toc ไปยังอินสแตนซ์ของ QgsMapRenderer ()
ขอบคุณ