আমার একটি কিউজিআইএস প্রকল্প রয়েছে যার মধ্যে একটি সুরকার রয়েছে। অবশ্যই আমি যদি জিইউআই তে যাই তবে আমি এটি পিডিএফ ইত্যাদি হিসাবে রফতানি করতে পারি আমার মেক স্ক্রিপ্টের জন্য যদিও আমি পাইথন স্ক্রিপ্টের মাধ্যমে এটি করতে চাই। অনলাইনে পড়া থেকে এখানে আমার চেষ্টা:
#!/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'
আমি পাইথন (দৃশ্যমান বিন্যাসে কোনও পরিবর্তন না করে) ব্যবহার করে পিএনজি / পিডিএফ হিসাবে প্রিন্ট / ম্যাপ কিউজিআইএস রচয়িতা ভিউটি সংরক্ষণের বাইরে রেখেছি? তবে যতটা সম্ভব সরল করার জন্য এটি পরিবর্তন করে। মনে হচ্ছে আমি প্রক্রিয়াটিতে কিছু ভেঙে ফেলেছি ... আমার কাছে এই টেম্পলেট ফাইলটি নেই। আমার সরল একটি বোর্ড.কিগ প্রজেক্ট ফাইল রয়েছে যার একটি সুরকার বোর্ড 36x48 রয়েছে। কোন ধারনা?
qgs = QgsApplication(sys.argv, True)
সাথেapp = QtGui.QApplication(sys.argv, True)
এবংqgs.initQgis()
সাথে প্রতিস্থাপন চেষ্টা করুনQgsApplication.initQgis()
?