파일에서 인쇄 작성기를로드하고 아틀라스를 생성하고 이미지로 내보내는 플러그인을 작성하려고합니다. 지금까지 템플릿을로드하고 이미지로 내보내는 데 성공했습니다.
범례의 레이어 (목차에도 있음)를 내 보낸 맵에 추가 할 수 없었습니다. 이로 인해 빈 맵이 생성되고 필드 표현식이 작동하지 않습니다.
# 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"/>
또한 tocs의 모든 레이어를 QgsMapRenderer () 인스턴스에 추가하는 가장 좋은 방법을 잘 모르겠습니다.
감사