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

GEODATA DAYS 2024

#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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

 

#4 Fri 12 May 2023 08:22

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

Re: QGIS: Export atlas en python

Juste après la définition de settings.


Christophe Damour (SIGéal)

Hors ligne

 

#5 Fri 12 May 2023 08:58

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3870

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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

 

Pied de page des forums

Powered by FluxBB