Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Wed 15 January 2020 18:38
- UPI
- Juste Inscrit !
- Date d'inscription: 15 Jan 2020
- Messages: 1
QGIS 3.4: migration de script depuis Qgis 2.14
Bonjour,
Mon employeur nous a récemment upgradé notre version de Qgis de la 2.14 à la 3.4. Nous utilisions plusieurs scripts (exécution depuis ScriptRunner) pour automatiser notre production de carte. Le passage à PyQt5 m'oblige à faire de nombreuses modifs sur le script. Jusqu'ici je me suis débrouillé avec les traceback et google mais là je coince
Voici un extrait du code en question :
Code:
def run_script(iface): global project_path project_path = str(QgsProject.instance().homePath()) #Recupere le dossier du projet en cours relative_folder = "\exportatlas\" #Chemin relatif du dossier d'export par rapport au projet uv_field_name = "UV" #Nom du champ des valeurs uniques format = "png" # Autorises unqiuement les formats raster. Pas de pdf ni de svg pour l'instant #PATH VERS L'EXPORT folder = project_path + relative_folder #utilise la couche selectionnee dans le controle des couches activeLayer = iface.activeLayer() themaLayer1 = QgsProject.instance().mapLayersByName('couche_thema1') themaLayer2 = QgsProject.instance().mapLayersByName('couche_thema2') themaLayer3 = QgsProject.instance().mapLayersByName('couche_thema3') themaLayer4 = QgsProject.instance().mapLayersByName('couche_thema4') #changer l'index si besoin d'un autre composeur activeCompo = QgsProject.instance().layoutManager().layouts()[1] myComposition = activeCompo.composition() #RECUPERATION DE LA COUCHE DE COUVERTURE DE L'ATLAS coverageLayer = QgsProject.instance().mapLayersByName('coverageLayer') #print "Selected coverage layer: " + coverageLayer.name()
Le message d'erreur rencontré se situe au niveau de la ligne myComposition = activeCompo.composition()
il est le suivant :
Code:
AttributeError: 'QgsPrintLayout' object has no attribute 'composition'
Pour vous donner un peu de contexte, ce script permet de faire une boucle sur une liste de valeur qui sera utilisé pour filtrer une ou plusieurs couches. A chaque boucle une carte sera exporté en png. Ce script utilise les fonctions d'atlas.
Il fonctionnait parfaitement sur Qgis 2.14
Si vous avez une idée pour m'aiguiller un peu ça serait top
Merci !
Dernière modification par UPI (Thu 16 January 2020 07:50)
Hors ligne
#2 Thu 16 January 2020 12:43
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 3.4: migration de script depuis Qgis 2.14
Bonjour,
Code:
myComposition = activeCompo.composition()
Ce n'est plus utile. La classe QgsComposition n'existe plus et est remplacée par QgsPrintLayout. Pour exporter il faut faire appel à la classe QgsPrintLayoutExporter.
Regardez sur ce post le code posté par Alexandre Neto (réponse pour la version 3)
https://gis.stackexchange.com/questions … mmand-line
Et en particulier le commentaire de nyalldawson qui explique comment la procédure est simplifiée sur la 3.
Hors ligne