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 17 March 2022 14:53

mfangain
Participant actif
Date d'inscription: 12 Jun 2012
Messages: 88

QGIS: Champ virtuel lie a l'entite de l'atlas

Bonjour,

Je crée un atlas basé sur une couche de polygones.
Je dispose également d'une couche de lignes, sur laquelle je souhaite faire des statistiques concernant les lignes qui intersectent le polygone concerné par l'atlas.

En utilisant la condition " intersects(  $geometry,  @atlas_geometry )", cela fonctionne très bien, mais ma couche de ligne contient plus de 10 000 entités, et en multipliant les objets de la mise en page qui réalisent la même intersection, cela finit par être beaucoup trop long.

Je souhaite donc réaliser le filtre en amont, 1 seule fois, pour optimiser le temps de réponse.

J'ai essayé de dupliquer la couche de lignes et de filtrer cette 2e couche avec la condition ci-dessus, mais j'obtiens l'erreur ci-jointe. Je comprends que derrière c'est une requête SQL, et je ne vois pas comment il peut être possible de faire intervenir la variable liée à l'atlas à ce niveau.

En 2e option, j'ai envisagé de créer un champ virtuel, qui se remplit avec 'oui' si la ligne intersecte l'atlas, et 'non' si ce n'est pas le cas, en utilisant l'expression :

Code:

CASE WHEN  intersects(  $geometry,  @atlas_geometry ) THEN 'oui'
ELSE 'non'
END

Je n'ai pas d'erreur, mais le champ reste toujours à 'non' même quand l'atlas est activé.


En condition, j'ai essayé des choses du genre WHEN  intersects(  $geometry,  @atlas_geometry )=1 ou is true. Mais j'ai toujours le même résultat : des 'non' partout, ou des valeurs NULL.

Sachant qu'au niveau de la symbologie, ce critère fonctionne très bien : en utilisant une règle
WHEN  intersects(  $geometry,  @atlas_geometry )
il n'y a bien que les objets qui intersectent l'atlas qui apparaissent.


Quelqu'un aurait-il une idée de pourquoi le champ virtuel ne se met pas à jour?
Voyez-vous une autre possibilité me permettant de calculer 1 seule fois l'intersection entre l'entité de mon atlas et ma couche de lignes?

Vous remerciant par avance.

MFANGAIN

Dernière modification par mfangain (Thu 17 March 2022 14:54)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB