Message posté par : Yoann Lecomte
----------------------------------------
Etrange, j'avais posté le code qui a permis a PYJOUBERT d'aboutir mais mon message
à disparu...
je le repartage ici (ce code n'est pas destiné à être utilisé, il nécessite encore pas
mal de nettoyage mais il montre l'idée)
:
-----------------
Code :
# -*- coding: utf-8 -*-
import sys
import os
import qgis
from qgis.utils import iface
from qgis.core import
QgsStyle,QgsProject,QgsPrintLayout,QgsLayoutItemMap,QgsMapSettings,QgsRectangle,QgsLayoutSize,QgsLayoutExporter,QgsUnitTypes,QgsLayoutItemPolygon,QgsFillSymbol
def MonTest():
project = QgsProject.instance()
layout = QgsPrintLayout(project)
layout.initializeDefaults()
layout.setUnits(QgsUnitTypes.LayoutMillimeters)
page = layout.pageCollection().pages()[0]
page.setPageSize(QgsLayoutSize(100,50))
nomfic = "C:/Temp/Rectangle.png"
if (os.path.exists(nomfic)):
os.remove(nomfic)
TracerRectangleRepres (layout,10,10,80,30)
exporter = QgsLayoutExporter(layout)
settings = exporter.ImageExportSettings()
exporter.exportToImage(nomfic, settings)
def TracerRectangleRepres (layout,x,y,larg,haut):
polygon = QPolygonF()
polygon.append(QPointF(float(x),float(y)))
polygon.append(QPointF(float(x),(float(y) + float(haut))))
polygon.append(QPointF((float(x) + float(larg)),(float(y) + float(haut))))
polygon.append(QPointF((float(x) + float(larg)),float(y)))
layoutItemPolygon = QgsLayoutItemPolygon(polygon,layout)
layout.addLayoutItem(layoutItemPolygon)
style_layer = QgsVectorLayer('polygon', 'style', 'memory')
style_layer.loadNamedStyle("C:/Temp/SPE_PSDETAIL_C.qml")
r = style_layer.renderer()
root = r.rootRule()
rule = find_rule_by_label(root, 'COMMENCE_PAR_UA1_5000') # a adapter
symbol = rule.symbol()
layoutItemPolygon.setSymbol(symbol)
def find_rule_by_label(root, label):
for child in root.descendants():
if child.label() == label:
return child
if __name__ == '__console__':
MonTest()
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=366623#p366623
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net