Saya mencoba mengikuti bagian rendering peta dari buku masak pyqgis, tetapi saya ingin menguji ini sebagai aplikasi mandiri. Saya dapat melakukan bagian pertama, menggunakan rendering sederhana, tapi saya agak terjebak melakukan contoh kedua menggunakan komposer peta sebagai skrip mandiri.
Ini adalah contoh mandiri yang bisa saya lakukan:
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")
Apa yang benar-benar ingin saya lakukan adalah sama, tetapi gunakan QgsComposition
, dan simpan seperti pdf misalnya. Buku masak itu mengatakan:
Saat menggunakan komposer dalam aplikasi mandiri, Anda dapat membuat instance peta renderer Anda sendiri dengan cara yang sama seperti yang ditunjukkan pada bagian di atas dan meneruskannya ke komposisi.
Bit ini saya tidak bisa lakukan, semua usaha saya mendapatkan peta kosong, atau segfault. Saya menjalankan linux mint 13, menggunakan qgis 1.8.0. Akan lebih bagus jika seseorang dapat menunjukkan kepada saya bagaimana memodifikasi contoh sederhana menjadi contoh yang menggunakan komposer.