Estoy escribiendo una aplicación independiente en Python/QGIS que simplemente crea mapas.
Quiero cargar vector/raster capas, establecer la simbología, el conjunto de medida
Por el momento, eso es todo!
Actualmente estoy usando la simple representación técnica que se describe aquí: http://www.qgis.org/pyqgis-cookbook/composer.html#simple-rendering
Me han fallado, sin embargo, en la adaptación de este código para definir un determinado punto. I proporcionar el código de abajo.
Los únicos ejemplos que puedo encontrar que muestran cómo cambiar la medida en que implican la creación de una MapCanvas. ...Pero no estoy seguro de que esto es algo que yo quiero hacer, teniendo en cuenta que soy sólo hacer mapas sencillos...y parece introducir un nuevo conjunto de complicaciones. No hay duda de que es una manera fácil de definir medida a través de la simple representación de' la técnica?
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")