#1 Thu 11 May 2023 23:09
- mickael_53
- Participant occasionnel
- Date d'inscription: 7 Dec 2018
- Messages: 11
QGIS: Export atlas en python
Bonjour,
J'ai un code python qui permet d'exporter un atlas en plusieurs fichiers.
Code:
import os from qgis.core import QgsProject import time project = QgsProject.instance() myAtlasProject='W:/PARTAGE_FDCM/GEOLIS/MAJ_V3/qgis/generation_atlas_v3.qgz' project.read(myAtlasProject) manager = project.layoutManager() layoutName = "Composeur 1" layout = manager.layoutByName(layoutName) #start atlas iterator atlas = layout.atlas() if atlas.beginRender(): print('lecture de atlas') while atlas.next(): exporter = QgsLayoutExporter(layout) settings = QgsLayoutExporter.PdfExportSettings() filename = atlas.currentFilename()+'.pdf' #f'atlas.currentFilename().png' filename_path = os.path.join("W:/PARTAGE_FDCM/GEOLIS/ATLAS_MATRICULE/carte_territoire/", filename) print(f'Export '+atlas.currentFilename()) exporter.exportToPdf(filename_path, settings) print(f'finished') atlas.endRender() else: print ('pas de lecture') print('WARNING - No atlas features available for export!') os._exit(0)
Maintenant je voudrais que les pages de l'atlas soit dans un seul fichier pdf. Mais pas moyen de trouver, je fais donc appel à vos lumières !
Merci d'avance.
Hors ligne
#2 Fri 12 May 2023 07:21
Re: QGIS: Export atlas en python
Bonjour,
Tu peux essayer :
Code:
settings.exportLayersAsSeperateFiles = false
https://qgis.org/pyqgis/3.28/core/QgsLa … rtSettings
Dernière modification par SIGEAL (Fri 12 May 2023 08:08)
Christophe Damour (SIGéal)
Hors ligne
#3 Fri 12 May 2023 08:15
- mickael_53
- Participant occasionnel
- Date d'inscription: 7 Dec 2018
- Messages: 11
Re: QGIS: Export atlas en python
Merci pour ta réponse, je vais tester. Pourrais tu me dire où je dois insérer ce code, dans la boucle ?
Hors ligne
#5 Fri 12 May 2023 08:58
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3883
Re: QGIS: Export atlas en python
Bonjour,
En réalité, vous n'aviez pas besoin du while. QGIS fournit deux fonctions pour l'export pdf : exportToPdf (pour générer un seul fichier) et exportToPdfs (pour un fichier par entité atlas)
Hors ligne
#6 Fri 12 May 2023 09:17
- mickael_53
- Participant occasionnel
- Date d'inscription: 7 Dec 2018
- Messages: 11
Re: QGIS: Export atlas en python
J'ai essayé cela mais ça ne fonctionne pas
Code:
while myAtlas.next(): exporter=QgsLayoutExporter(layout) settings = QgsLayoutExporter.PdfExportSettings() settings.exportLayersAsSeperateFiles(false) filename = 'atlas_currentFilename.pdf' filename_path = os.path.join("c:/temp/", filename) exporter.exportToPdf(filename_path, settings
Hors ligne
#7 Fri 12 May 2023 09:43
Re: QGIS: Export atlas en python
Exemple :
Code:
project = QgsProject.instance() # Open prepared layout that as atlas enabled and set layout = project.layoutManager().layoutByName('A3H') # Export atlas exporter = QgsLayoutExporter(layout) settings = QgsLayoutExporter.PdfExportSettings() settings.writeGeoPdf = True settings.includeGeoPdfFeatures = True res = exporter.exportToPdfs(layout.atlas(), 'atlas/output_||@atlas_featurenumber.pdf', settings)
Christophe Damour (SIGéal)
Hors ligne
#8 Fri 12 May 2023 10:45
- mickael_53
- Participant occasionnel
- Date d'inscription: 7 Dec 2018
- Messages: 11
Re: QGIS: Export atlas en python
Salut SIGEAL, tout d'abord je tiens à te remercier pour ta réponse. Je n'ai pas testé mais entre temps j'ai trouvé une solution qui a l'air de fonctionner.
J'ai ajouté une boucle sur la valeur d'une table pour éditer plusieurs PDF selon un champ.
Code:
layer = QgsProject.instance().mapLayersByName("edition_atlas")[0] for f in layer.getFeatures(): id_reg=str(f['id_reg_atlas']) base_path = ('C:\\temp\\') pdf_filename = os.path.join(base_path, "circuit_comptage_"+id_reg+".pdf") layoutName='mp_atlas' layout = project.layoutManager().layoutByName(layoutName) myAtlas=layout.atlas() myAtlas.setFilterFeatures(True) myAtlas.setFilterExpression("id_reg = '%s'" % (id_reg)) exporter = QgsLayoutExporter(myAtlas.layout()) exporter.exportToPdf(myAtlas, pdf_filename, QgsLayoutExporter.PdfExportSettings())
Je ne sais pas lequel des deux est le plus optimisé. Aujourd'hui je vais pas avoir le temps mais je testerai ta version.
ENCORE UN GRAND MERCI A TOI
Hors ligne