Tôi đang cố gắng xây dựng một plugin để tải một trình soạn thảo in từ tệp, tạo tập bản đồ và xuất thành hình ảnh. Cho đến nay tôi đã thành công trong việc tải mẫu và xuất nó thành hình ảnh.
Tôi đã không thể thêm bất kỳ lớp nào trong chú giải (cũng nằm trong toc) vào bản đồ được xuất, dẫn đến một bản đồ trống và không có biểu thức trường nào hoạt động.
# 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)
Đây là đoạn trích từ mẫu đã tải sẽ thiết lập tập bản đồ:
<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"/>
Tôi cũng không chắc chắn về cách tốt nhất để thêm tất cả các lớp trong mã thông báo vào thể hiện của QssMapRenderer ().
Cảm ơn