Sto cercando di seguire la sezione di rendering della mappa dal ricettario di pyqgis, ma vorrei testarlo come un'applicazione autonoma. Posso fare la prima parte, usando il rendering semplice, ma sono un po 'bloccato a fare il secondo esempio usando il compositore di mappe come script autonomo.
Ecco un esempio autonomo per il bit che posso fare:
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")
Quello che mi piacerebbe davvero fare è lo stesso, ma uso QgsComposition
e salva come ad esempio pdf. Il libro di cucina dice:
Quando si utilizza il compositore in un'applicazione autonoma, è possibile creare la propria istanza del renderer della mappa nello stesso modo mostrato nella sezione precedente e passarla alla composizione.
Questo po 'non ho potuto fare, tutti i miei tentativi hanno ottenuto una mappa vuota o segfault. Sto eseguendo Linux mint 13, usando qgis 1.8.0. Sarebbe bello se qualcuno potesse mostrarmi come modificare il semplice esempio in uno che utilizza il compositore.