Message posté par : mfangain
----------------------------------------
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
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=351291#p351291
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net