Bir besteci içeren bir QGIS projem var. Tabii ki GUI içine giderseniz ben bir pdf vb olarak ihraç edebilirsiniz. Ama benim bir senaryo için bu bir python komut dosyası ile yapmak istiyorum rağmen. Online okumadan denemem burada:
#!/usr/bin/env python
import sys
from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge
from PyQt4.QtCore import QFileInfo
from PyQt4.QtXml import QDomDocument
from qgis.core import *
qgs = QgsApplication(sys.argv, True)
QgsApplication.setPrefixPath("/usr", True)
qgs.initQgis()
def make_pdf():
canvas = QgsMapCanvas()
bridge = QgsLayerTreeMapCanvasBridge(
QgsProject.instance().layerTreeRoot(), canvas)
bridge.setCanvasLayers()
QgsProject.instance().read(QFileInfo('../board.qgs'))
composition = QgsComposition(canvas.mapSettings())
map_item = composition.getComposerItemById('board36x48')
map_item.setMapCanvas(canvas)
map_item.zoomToExtent(canvas.extent())
composition.refreshItems()
composition.exportAsPDF('generated/board.pdf')
QgsProject.instance().clear()
make_pdf()
Bu başarısız olur, özellikle:
i:./assets/generate_board
QGraphicsScene::addItem: item has already been added to this scene
Traceback (most recent call last):
File "./assets/generate_board", line 30, in <module>
make_pdf()
File "./assets/generate_board", line 24, in make_pdf
map_item.setMapCanvas(canvas)
AttributeError: 'NoneType' object has no attribute 'setMapCanvas'
Ben Python (görünür düzende hiçbir şey değiştirmeden) kullanarak Baskı / Harita QGIS besteci görünümü PNG / PDF olarak bu dayalı ? ancak mümkün olduğunca basitleştirmek için değiştirdi. Görünüşe göre süreçte bir şey kırdım ... Bu şablon dosyası yok. Basit bir besteci board36x48 ile bir board.qgs proje dosyası var. Herhangi bir fikir?
qgs = QgsApplication(sys.argv, True)
ileapp = QtGui.QApplication(sys.argv, True)
veqgs.initQgis()
ileQgsApplication.initQgis()
?