Suite

Filtrage des entités dans d'autres couches de QGIS Atlas ?

Filtrage des entités dans d'autres couches de QGIS Atlas ?


J'essaie d'utiliser les outils QGIS Atlas pour créer des « cartes de dispersion » pour les étudiants, c'est-à-dire. afficher l'école et les élèves qui fréquentent cette école, pour 215 écoles.

La couche des écoles est la couche de couverture et est déterminée par leSCHNUM(numéro d'école) valeur. Cela fonctionne bien, c'est-à-dire qu'il pilote correctement les pages.

Comment, cependant, puis-je afficher uniquement les entités d'autres couches, dans ce cas la couche de points de l'étudiant, qui correspondent à laSCHNUMvaleur pour l'entité actuelle dans la couche de couverture ?

Je voudrais également basculer la couche de couverture (écoles) sur « cachée » et utiliser la même technique pour afficher uniquement l'école actuelle à partir d'une couche d'écoles en double.

Il y a une présentation disponible ici qui fait allusion à l'utilisation d'un paramètre de règle de rendu de calque utilisant$atlasfeatureid, mais je n'arrive pas à comprendre comment cela fonctionne.

J'ai également trouvé cette page de suivi des bogues qui montre que cela fonctionne, mais encore une fois, je n'arrive pas à le faire fonctionner sur mes données :


En effet, vous devez utiliser une symbologie basée sur des règles pour obtenir ce que vous voulez.

Vous devez créer une règle pour ce que vous souhaitez afficher et une règle ELSE pour tous les autres.

Dans la règle ELSE, décochez la case du symbole pour le rendre invisible.

Masquer d'autres entités de la couche de couverture

La règle pour afficher uniquement l'entité actuelle de l'atlas peut être la suivante :

$id = @atlas_featureid

Remarque: Je crois que la variable @atlas_featureid est une syntaxe 2.12. Je pense que dans 2.8.x vous auriez besoin d'utiliser une fonction appelée $atlas_featureid.

Masquer les entités en dehors de l'entité actuelle de l'atlas

La recette est la même qu'avant, une autre règle pour masquer les fonctionnalités, une à afficher.

Pour votre question particulière, vous semblez avoir un attribut partagé appelé SCHNUM. Dans ce cas, la règle peut être :

"Layers_field" = attribut (@atlas_feature, 'coverage_layer_field_name')

dans ton cas particulier :

"SCHNUM" = attribut( @atlas_feature , 'SCHNUM')

Notez la différence entre les deux SCHNUM. Le premier, entre guillemets doubles, représente la valeur de chaque entité de couche actuelle du champ qui stocke le code de l'école. La seconde, entre guillemets simples, est une chaîne avec le nom de la couche de couverture qui stocke le code de l'école.

Noter: Encore une fois, je pense que la variable @atlas_feature est une "nouvelle" chose, et dans 2.8.x, vous devrez utiliser la fonction $atlas_feature


Voir la vidéo: QGIS TUTORIEL: Filtrer les données dune Couche