Filterfunktionen in anderen Ebenen von QGIS Atlas?

22

Ich versuche, die QGIS Atlas-Tools zu verwenden, um Schüler-Scattermaps zu erstellen, d. H. Anzeige der Schule und der Schüler, die diese Schule besuchen, für 215 Schulen.

Die SCHNUMSchulschicht ist die Deckungsschicht und wird vom Wert (Schulnummer) bestimmt. Das funktioniert gut, das heißt, es werden die Seiten korrekt angesteuert.

Wie kann ich jedoch nur Features aus anderen Layern anzeigen, in diesem Fall dem Schülerpunkt-Layer, die dem entsprechenden SCHNUMWert für das aktuelle Feature im Coverage-Layer entsprechen?

Ich möchte auch die Coverage-Ebene (Schulen) auf "versteckt" schalten und dieselbe Technik verwenden, um nur die aktuelle Schule aus einer duplizierten Schulebene anzuzeigen.

Hier ist eine Präsentation verfügbar , die auf die Verwendung einer Layer-Rendering-Regeleinstellung mit verweist $atlasfeatureid, aber ich kann nicht herausfinden, wie das funktioniert.

Ich habe auch diese Bug-Tracker-Seite gefunden , die diese Funktion zeigt, aber ich kann sie auch nicht dazu bringen, meine Daten zu bearbeiten:

DPSSpatial
quelle
Es tut uns leid, dies als Antwort zu posten, obwohl es eine Frage ist. Gibt es ein empfohlenes Video-Tutorial dafür? Ich habe versucht mitzumachen und irgendwie habe ich es immer geschafft, mich irgendwann zu verlaufen. Das gleiche Problem haben.
JRamos

Antworten:

41

In der Tat müssen Sie regelbasierte Symbologie verwenden, um das zu erreichen, was Sie wollen.

Sie müssen eine Regel für das erstellen, was Sie anzeigen möchten, und eine ELSE-Regel für alle anderen.

Bildbeschreibung hier eingeben

Deaktivieren Sie in der ELSE-Regel das Kontrollkästchen für das Symbol, um es unsichtbar zu machen.

Bildbeschreibung hier eingeben

Blenden Sie andere Funktionen in der Coverage-Ebene aus

Die Regel, nach der nur die aktuelle Atlasfunktion angezeigt wird, kann die folgende sein:

$id  =  @atlas_featureid 

Bildbeschreibung hier eingeben

Anmerkung : Ich glaube, dass die Variable @atlas_featureid eine 2.12-Syntax ist. Ich denke, dass Sie in 2.8.x eine Funktion mit dem Namen $ atlas_featureid verwenden müssen.

Ausblenden von Funktionen außerhalb der aktuellen Atlasfunktion

Das Rezept ist das gleiche wie zuvor, eine Regel zum Ausblenden von Features und eine zum Anzeigen.

Für Ihre spezielle Frage scheinen Sie ein gemeinsames Attribut namens SCHNUM zu haben. In diesem Fall kann die Regel sein:

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

in Ihrem speziellen Fall:

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

Beachten Sie den Unterschied zwischen beiden SCHNUM. Das erste, in doppelten Anführungszeichen, stellt den Wert jedes aktuellen Layer-Features des Felds dar, in dem der Schulcode gespeichert ist. Das zweite ist in einfachen Anführungszeichen eine Zeichenfolge mit dem Namen der Deckungsschicht, in der der Schulcode gespeichert ist.

Hinweis : Auch hier halte ich die Variable @atlas_feature für eine "neue" Sache, und in 2.8.x müssen Sie die Funktion $ atlas_feature verwenden

Bildbeschreibung hier eingeben

Alexandre Neto
quelle