मेरे पास एक QGIS प्रोजेक्ट है जिसमें एक संगीतकार है। बेशक अगर मैं GUI में जाता हूं तो मैं इसे एक pdf आदि के रूप में निर्यात कर सकता हूं। अपनी स्क्रिप्ट के लिए हालांकि मैं चाहता हूं कि यह एक अजगर स्क्रिप्ट के माध्यम से हो। यहाँ ऑनलाइन पढ़ने से मेरा प्रयास है:
#!/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'
मैं पायथन (दृश्यमान लेआउट में कुछ भी बदले बिना) का उपयोग करके पीएनजी / पीडीएफ के रूप में सेव प्रिंट / मैप क्यूजीआईएस संगीतकार दृश्य के इस बंद आधारित है ? लेकिन जितना संभव हो उतना सरल बनाने के लिए इसे संशोधित किया। ऐसा लगता है कि मैंने इस प्रक्रिया में कुछ तोड़ दिया है ... मेरे पास यह टेम्पलेट फ़ाइल नहीं है। मैं एक संगीतकार के साथ एक बोर्ड .qgs परियोजना फ़ाइल है। कोई विचार?
qgs = QgsApplication(sys.argv, True)
साथapp = QtGui.QApplication(sys.argv, True)
औरqgs.initQgis()
साथ की कोशिश करोQgsApplication.initQgis()
?