अजगर में पीडीएफ के रूप में QGIS निर्यात संगीतकार


11

मेरे पास एक 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()?
जोसेफ

आपको Maps_printer प्लगइन में यहाँ कुछ उपयोगी कोड मिल सकता है: github.com/DelazJ/MapsPrinter/wiki । डिफ सेवफाइल (सेल्फ) :, डिफ प्रिंटटॉस्टर (सेल्फ, सीडब्ल्यूई, फोल्डर, नेम, एक्सट) को देखें :, डि एक्सपोर्टकंपो (सेल्फ, सीडब्ल्यूई, फोल्डर, टाइटल, एक्सटेंशन) को
डिफाइन करें

क्या आपको यह काम मिला?
ह्यूगो रूससा - जियोडेटअप

जवाबों:


1

आप अपने पूर्ण संगीतकार नाम से QgsComposerMap आइटम बनाने की कोशिश कर रहे हैं!

map_item = composition.getComposerItemById('board36x48')

अपने कंपोज़र में मैप कंपोनेंट की आईडी के बजाय उपयोग करें (मैप; मैप; मैप; मैप 1 ...)। जब आप अपना कंपोजर बनाते हैं तो आपने इसे परिभाषित किया था।

कोड के अन्य टुकड़े के अनुसार ठीक है, आपको इसे काम करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.