from PyQt4.QtCore import * from PyQt4.QtGui import * aLayer = qgis.utils.iface.activeLayer() img = QImage(QSize(800,600), QImage.Format_RGB32) img.fill(QColor(255,255,255).rgb()) p = QPainter() p.begin(img) p.setRenderHint(QPainter.Antialiasing) render = QgsMapRenderer() render.setLayerSet([ aLayer.id() ]) rect = QgsRectangle(render.fullExtent()) render.setExtent(rect) render.setOutputSize(img.size(), 96) render.render(p) p.end() img.save("/tmp/render.png","png")
(compréhension du “portrayal model” portrayalogc.png)
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.1.0" xmlns="http://www.opengis.net/sld" xmlns:se="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd"> <NamedLayer> <se:Name>kartenblatt_region</se:Name> <UserStyle> <se:Name>kartenblatt_region</se:Name> <se:FeatureTypeStyle> <se:Rule> <se:Name>Single symbol</se:Name> <se:PolygonSymbolizer> <se:Fill> <se:SvgParameter name="fill">#f1f4c7</se:SvgParameter> </se:Fill> <se:Stroke> <se:SvgParameter name="stroke">#afb38a</se:SvgParameter> <se:SvgParameter name="stroke-width">0.26</se:SvgParameter> <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter> </se:Stroke> </se:PolygonSymbolizer> </se:Rule> </se:FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>
aLayer.loadSldStyle('/path/to/singleSymbol.sld')