作曲家を含むQGISプロジェクトがあります。もちろん、GUIに移動すると、pdfなどとしてエクスポートできます。makeスクリプトの場合は、Pythonスクリプトを使用してこれを実行します。ここでオンラインで読むことから私の試みです:
#!/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()
これは特に失敗します:
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'
私はこのオフに基づいて(目に見えるレイアウトには何も変更せず)のPythonを使用してPNG / PDFとして保存印刷/地図QGIS作曲ビューを?ただし、可能な限り簡素化するために変更しました。途中で何かを壊したようです...このテンプレートファイルがありません。作曲家board36x48を使用してboard.qgsプロジェクトファイルを作成しました。何か案は?
あなたはMaps_printerプラグインで、ここでのコードのいくつかの有用な部分を見つけるかもしれない:github.com/DelazJ/MapsPrinter/wikiを。def saveFile(self):, def printToRaster(self、cView、folder、name、ext):, def exportCompo(self、cView、folder、title、extension):
—
gisnside
うまくいきましたか?
—
ヒューゴルーサファ-GeoDatup
qgs = QgsApplication(sys.argv, True)
とapp = QtGui.QApplication(sys.argv, True)
してqgs.initQgis()
とQgsApplication.initQgis()
?