পাইথনে পিডিএফ হিসাবে কিউজিআইএস রফতানি সুরকার


11

আমার একটি কিউজিআইএস প্রকল্প রয়েছে যার মধ্যে একটি সুরকার রয়েছে। অবশ্যই আমি যদি জিইউআই তে যাই তবে আমি এটি পিডিএফ ইত্যাদি হিসাবে রফতানি করতে পারি আমার মেক স্ক্রিপ্টের জন্য যদিও আমি পাইথন স্ক্রিপ্টের মাধ্যমে এটি করতে চাই। অনলাইনে পড়া থেকে এখানে আমার চেষ্টা:

#!/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()?
জোসেফ

আপনি এখানে মানচিত্র_প্রিন্টার প্লাগইনে কোডের কয়েকটি কার্যকর টুকরা পেতে পারেন: github.com/DelazJ/MapsPrinter/wiki । ডিফ সেভফাইলে (স্ব) অনুসন্ধান করুন: ডিএফ প্রিন্টটোরেস্টার (স্ব, সিভিউ, ফোল্ডার, নাম, এক্সট্রাক্ট): ডিএফ এক্সপোর্ট কমপো (স্ব, সিভিউ, ফোল্ডার, শিরোনাম, এক্সটেনশন):
গিসানসাইড

আপনি এটি কাজ পেয়েছিলাম?
হুগো রৌসাসাফা - জিওড্যাটআপ

উত্তর:


1

আপনি আপনার সম্পূর্ণ সুরকারকারীর নাম থেকে QgsComposerMap আইটেমটি তৈরি করার চেষ্টা করছেন!

map_item = composition.getComposerItemById('board36x48')

পরিবর্তে আপনার সুরকারটিতে মানচিত্রের আইডি ব্যবহার করুন (মানচিত্র; মানচিত্র 0; মানচিত্র 1 ...)। আপনি যখন নিজের সুরকার তৈরি করবেন তখন আপনি এটিকে সংজ্ঞায়িত করেছেন।

কোডের অন্যান্য অংশ ঠিক আছে, আপনার এটি কাজ করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.