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 Mon 15 June 2020 09:28

Valentin Chenut
Juste Inscrit !
Date d'inscription: 19 Jun 2019
Messages: 6

QGIS: Script Python depuis l'Atlas (Mise en page)

Bonjour,

Dans le cadre de mon stage, je cherche à afficher dans ma mise en page des statistiques qui sont dans plusieurs couches différentes.
Je me suis mis à créer un script python qui permet de faire appel aux différentes couches dont j'ai besoin. Le premier point positif c'est que lorsque je lance le programme dans la console python les résultats sont ceux attendus.

Néanmoins lorsque je déplace le script dans l'éditeur de fonction au sein de "mise en page" l'algorithme ne fonctionne plus.

L'algorithme consiste à vérifier si un bassin versant intersecte un département. Lorsque j'analyse les éléments géométrie que je compare il y a une grande différence. En effet, lorsque je lance le script depuis la console du logiciel la géométrie apparait comme tel (une liste de coordonnées):

<QgsGeometry: MultiPolygon (((621997.04942394467070699 6740152.91263561230152845, 621997.03505863819736987 6740152.91922659147530794, 621799.95471278170589358 6740268.79058571252971888, 621414.93406843324191868 6740495.15950726345181465, 621166.29796708945650607 6740705.76891075447201729, 621025.89169809524901211 6740743.79560860712081194, 620952.76343299413565546 6740828.6243961239233613, 620616.37341352901421487 6741249.84320310689508915, 620414.53940184996463358 6741448.75208418257534504, 620095.625 6741551, 619452.17143311933614314 6741723.71436096448451281, 619428.77038828714285046 6741867.04576055984944105, 619105.66317255620379001 6742419.30703000165522099, 619016.32697311672382057 6742572.00223613623529673, 618355.24745660263579339 6743195.05505479965358973, 618350.34958554862532765 6743196.45094805676490068, 617996.40810000151395798 6743666.87070000171661377, 617505.86309999972581863 6744334.27879999950528145, 617599.30020000040531158 6744517.81610000133514404, 617363.78757634153589606 6744...>


Alors que lorsque je lance le script depuis l'éditeur de fonction de la mise en page il me renvoie le type de géométrie :

<géométrie : MultiPolygon>

Pour récupérer la géométrie (dans les deux cas) j'ai utilisé la fonction suivante : elt.geometry()
Pour faire fonctionner le programme dans la mise en page j'ai également testé la variable @atlas_geometry.
Mais celle-ci aussi renvoie le type et non la liste des sommets de la géométrie.

Existe-t-il un moyen de récupérer les coordonnées des sommets des polygones depuis la fonctionnalité Mise en Page.

Merci d'avance, Valentin

Hors ligne

 

#2 Mon 15 June 2020 16:20

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

Re: QGIS: Script Python depuis l'Atlas (Mise en page)

Bonjour,

je pense qu'il faut que vous utilisiez la fonction geom_to_wkt.

Dans le panneau d'expression le retour est "lite" alors que dans la console python c'est détaillé.

Il faudrait que vous nous fournissiez l'expression utilisée dans votre mise en page pour être certain que ma réponse correspond bien à votre besoin.

Cordialement,

Hors ligne

 

#3 Tue 16 June 2020 13:18

Valentin Chenut
Juste Inscrit !
Date d'inscription: 19 Jun 2019
Messages: 6

Re: QGIS: Script Python depuis l'Atlas (Mise en page)

merci JD,

En réalité ma fonction fonctionnait car comme tu l'as dit l'affichage dans "mise en page" est allégée donc on ne voyait que le type mais il comprennait bien lors de l'intersection. C'est que dans l'exemple sur lequel je testais il n'y avait aucun élément qui avait le bonne condition. Donc le compteur restait à zéro.

Merci encore !

Hors ligne

 

Pied de page des forums

Powered by FluxBB