#1 Thu 11 May 2023 23:09
- mickael_53
 - Participant occasionnel
 - Date d'inscription: 7 Dec 2018
 - Messages: 13
 
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: 13
 
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: 4139
 
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: 13
 
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, settingsHors 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: 13
 
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


