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

22

J'essaie d'utiliser les outils QGIS Atlas pour créer des «scattermaps» pour é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 dépend de la valeur SCHNUM(numéro de l'école). Cela fonctionne bien, c'est-à-dire qu'il conduit les pages correctement.

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

Je voudrais également basculer la couche de couverture (écoles) sur «caché» 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 à l'aide $atlasfeatureid, mais je ne peux 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 ne peux pas le faire fonctionner sur mes données:

DPSSpatial
la source
Désolé de poster ceci comme réponse même si c'est une question. Existe-t-il un didacticiel vidéo recommandé pour cela? J'ai essayé de suivre et j'ai toujours réussi à me perdre à un moment ou à un autre. Ayant le même problème.
JRamos

Réponses:

41

En effet, vous devez utiliser la symbologie basée sur des règles pour réaliser 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.

entrez la description de l'image ici

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

entrez la description de l'image ici

Masquer les autres fonctionnalités de la couche de couverture

La règle pour afficher uniquement la fonction d'atlas actuelle peut être la suivante:

$id  =  @atlas_featureid 

entrez la description de l'image ici

note : 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 la fonctionnalité actuelle de l'atlas

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

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

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

dans votre cas particulier:

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

Remarquez la différence entre les deux SCHNUM. Le premier, entre guillemets, 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.

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

entrez la description de l'image ici

Alexandre Neto
la source