Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 11 February 2021 17:52

thysma
Juste Inscrit !
Date d'inscription: 11 Feb 2021
Messages: 2

QGIS/python: probleme exportations PDF

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 smile

Hors ligne

 

#2 Thu 11 February 2021 19:38

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS/python: probleme exportations PDF

Pouvez vous executer la dernière ligne dans la console et nous donner le retour ? Cela doit renvoyer un nombre.

Hors ligne

 

Pied de page des forums

Powered by FluxBB