ฉันกำลังพยายามติดตามส่วนการแสดงแผนที่จากตำรา pyqgis แต่ฉันต้องการทดสอบนี้เป็นแอปพลิเคชันแบบสแตนด์อโลน ฉันสามารถทำส่วนแรกโดยใช้การเรนเดอร์แบบง่าย ๆ แต่ฉันก็ยังคงทำตัวอย่างที่สองโดยใช้ตัวแต่งแผนที่เป็นสคริปต์แบบสแตนด์อโลน
นี่เป็นตัวอย่างสำหรับบิตที่ฉันสามารถทำได้:
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtXml import *
QgsApplication.setPrefixPath("/usr/", True)
QgsApplication.initQgis()
fh = open("eg.csv","w")
fh.write("""
x,y,name
153.0278, -27.4679, Brisbane
144.2500, -23.4500, Longreach
145.7753, -16.9256, Cairns
""")
fh.close()
uri = "eg.csv?delimiter=%s&xField=%s&yField=%s" % (",", "x", "y")
layer = QgsVectorLayer(uri, "eglayer", "delimitedtext")
QgsMapLayerRegistry.instance().addMapLayer(layer)
img = QImage(QSize(800,600), QImage.Format_ARGB32_Premultiplied)
color = QColor(255,255,255)
img.fill(color.rgb())
p = QPainter()
p.begin(img)
render = QgsMapRenderer()
lst = [ layer.getLayerID() ] # add ID of every layer
render.setLayerSet(lst)
rect = QgsRectangle(render.fullExtent())
rect.scale(1.1)
render.setExtent(rect)
render.setOutputSize(img.size(), img.logicalDpiX())
render.render(p)
p.end()
img.save("render.png","png")
สิ่งที่ฉันต้องการจะทำคือเหมือนกัน แต่ใช้QgsComposition
และบันทึกเป็น pdf ตัวอย่าง ตำราพูดว่า:
เมื่อใช้ผู้แต่งในแอปพลิเคชันแบบสแตนด์อโลนคุณสามารถสร้างอินสแตนซ์ตัวสร้างแผนที่ของคุณเองในแบบเดียวกับที่แสดงในส่วนด้านบนและส่งต่อไปยังองค์ประกอบ
บิตนี้ฉันทำไม่ได้ความพยายามทั้งหมดของฉันมีแผนที่ว่างเปล่าหรือเป็นเซกฟอลต์ ฉันใช้ linux mint 13 โดยใช้ qgis 1.8.0 มันจะดีถ้ามีใครสามารถแสดงให้ฉันเห็นถึงวิธีการแก้ไขตัวอย่างง่ายๆให้กับผู้ที่ใช้นักแต่งเพลง