Message posté par : thysma (mathys.wohl(a)hotmail.fr)
----------------------------------------
Bonjour, je rencontre un problème pour exporter une carte au format PDF avec Python.
J'exécute mon script qui ne possède aucune erreur mais rien ne se passe. La carte
n'est pas exportée. Quelqu'un pourrait-il m'éclairer sur le sujet svp ?
J'ai utilisé le code suivant.
-----------------
Code :
from qgis.PyQt import QtGui
#import des couches
layers = QgsProject.instance().mapLayersByName('Autoroutes')
layer = layers [0]
#Création de la mise en page
project = QgsProject.instance()
manager = project.layoutManager()
layoutName = 'Layout1'
#Evite la création de doublons
layouts_list = manager.printLayouts()
for layout in layouts_list:
if layout.name() == layoutName:
manager.removeLayout(layout)
layout = QgsPrintLayout(project)
layout.initializeDefaults()
layout.setName(layoutName)
manager.addLayout(layout)
#Création de la carte dans la mise en page
map = QgsLayoutItemMap(layout)
map.setRect(20,20,20,20)
#Paramètres de la carte
settings = QgsMapSettings()
settings.setLayers([layer])
rect = QgsRectangle(settings.fullExtent())
rect.scale(1.0)
settings.setExtent(rect)
map.setExtent(rect)
layout.addLayoutItem(map)
map.attemptMove(QgsLayoutPoint(5, 20, QgsUnitTypes.LayoutMillimeters))
map.attemptResize(QgsLayoutSize(180, 180, QgsUnitTypes.LayoutMillimeters))
#Création d'une légende
legende = QgsLayoutItemLegend(layout)
legende.setTitle("Légende")
layerTree = QgsLayerTree()
layerTree.addLayer(layer)
legende.model().setRootGroup(layerTree)
layout.addLayoutItem(legende)
legende.attemptMove(QgsLayoutPoint(230, 15, QgsUnitTypes.LayoutMillimeters))
#Création d'une échelle
echelle = QgsLayoutItemScaleBar(layout)
echelle.setStyle('Line Ticks Up')
echelle.setUnits(QgsUnitTypes.DistanceKilometers)
echelle.setNumberOfSegments(4)
echelle.setNumberOfSegmentsLeft(0)
echelle.setUnitsPerSegment(5.0)
echelle.setUnitLabel('Km')
echelle.setLinkedMap(map)
echelle.setFont(QFont('Arial', 14))
echelle.update()
layout.addLayoutItem(echelle)
echelle.attemptMove(QgsLayoutPoint(220, 190, QgsUnitTypes.LayoutMillimeters))
#Création d'un titre
titre = QgsLayoutItemLabel(layout)
titre.setText("Titre de la carte")
titre.setFont(QFont('Arial', 24))
titre.adjustSizeToText()
layout.addLayoutItem(titre)
titre.attemptMove(QgsLayoutPoint(10, 5, QgsUnitTypes.LayoutMillimeters))
#Export PDF de la carte
layout = manager.layoutByName(layoutName)
exporter = QgsLayoutExporter(layout)
fn = 'C:/layout_export.pdf'
exporter.exportToPdf(fn, QgsLayoutExporter.PdfExportSettings())
-----------------
Merci d'avance :)
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=340167#p340167
Pour y répondre : geomatique(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