Estoy escribiendo una aplicación independiente en Python / QGIS que simplemente crea mapas.
Quiero cargar capas vectoriales / ráster, establecer simbología, establecer extensión
Por el momento, eso es todo!
Actualmente solo estoy usando la técnica de representación simple que se describe aquí: http://www.qgis.org/pyqgis-cookbook/composer.html#simple-rendering
Sin embargo, he fallado al adaptar este código para definir una extensión específica. Proporciono el código a continuación.
Los únicos ejemplos que puedo encontrar que muestran cómo cambiar la extensión implican crear un MapCanvas. ... Pero no estoy seguro de que esto sea algo que quiero hacer teniendo en cuenta que solo estoy haciendo mapas muy simples ... y parece presentar un conjunto completamente nuevo de complicaciones. ¿Seguramente hay una manera fácil de definir la extensión a través de la técnica de 'representación simple'?
Becky
from qgis.core import *
from qgis.utils import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtCore import QFileInfo, QSettings
QgsApplication.setPrefixPath('/Applications/QGIS-1.9.app/Contents/MacOS', True)
QgsApplication.initQgis()
province = QgsVectorLayer('/filepath/Province_studyUTM36S.shp' , 'layer', 'ogr')
town = QgsVectorLayer('/filepath/TownPolygons_UTM36S.shp' , 'layer', 'ogr')
road = QgsVectorLayer('/filepath/Roads_UTM36S.shp' , 'layer', 'ogr')
QgsMapLayerRegistry.instance().addMapLayer(province)
QgsMapLayerRegistry.instance().addMapLayer(road)
QgsMapLayerRegistry.instance().addMapLayer(town)
rasterFile = '/filepath/Landsat.tif'
fileInfo = QFileInfo(rasterFile)
baseName = fileInfo.baseName()
rlayer = QgsRasterLayer(rasterFile, baseName)
QgsMapLayerRegistry.instance().addMapLayer(rlayer)
img = QImage(QSize(800,600), QImage.Format_ARGB32_Premultiplied)
color = QColor(255,255,255)
img.fill(color.rgb())
p = QPainter()
p.begin(img)
p.setRenderHint(QPainter.Antialiasing)
render = QgsMapRenderer()
ID = [ rlayer.getLayerID(), town.getLayerID(), road.getLayerID(), province.getLayerID()]
render.setLayerSet(ID)
rect = QgsRectangle(render.fullExtent())
rect.scale(1.1)
render.setExtent(rect)
render.setOutputSize(img.size(), img.logicalDpiX())
render.render(p)
p.end()
img.save("/filepath/first_render.png","png")