#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)
Hors ligne