Estoy tratando de seguir la sección de representación de mapas del libro de cocina pyqgis, pero me gustaría probar esto como una aplicación independiente. Puedo hacer la primera parte, usando renderizado simple, pero estoy un poco atascado haciendo el segundo ejemplo usando el compositor de mapas como un script independiente.
Aquí hay un ejemplo independiente para el bit que puedo hacer:
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")
Lo que realmente me gustaría hacer es lo mismo, pero usar QgsComposition
y guardar como, por ejemplo, pdf. El libro de cocina dice:
Al usar el compositor en una aplicación independiente, puede crear su propia instancia de renderizador de mapas de la misma manera que se muestra en la sección anterior y pasarla a la composición.
Este bit no pude hacerlo, todos mis intentos obtuvieron un mapa vacío o un defecto. Estoy ejecutando linux mint 13, usando qgis 1.8.0. Sería genial si alguien pudiera mostrarme cómo modificar el ejemplo simple a uno que usa el compositor.