Wie symbolisiert man Features mit NULL-Werten in einer abgestuften Symbologie?

15

Ich habe ein Polygon-Feature-Dataset und ein Attribut aus einer anderen Tabelle, die ich (eins zu eins) in QGIS verknüpfe, um die Attribute als Choroplethen-Map zu symbolisieren. Da jedoch nicht alle Polygonfelder ein übereinstimmendes Feld in der Tabelle der numerischen Attribute haben, gibt es bei der Erstellung der abgestuften Symbologie einige Nullwerte.

Nach meinen Recherchen besteht der häufigste Rat in dieser Situation darin, eine Kopie des Polygon-Datasets (oder einen anderen Hintergrund) einzuschließen, der eine Standardsymbologie definiert. Dies funktioniert, weil die Nullwerte nicht in der abgestuften Symbologie klassifiziert sind, sodass man "darunter" sehen kann. Ich habe ein Bild von genau diesem angehängt. Die dunkelgrauen Features sind in der Verknüpfungstabelle ( mb_percentile_isochrones_all) nicht vorhanden , aber in der Grenzpolygontabelle ( mb2013_wgtn). Ich benötige also zwei Instanzen der mb2013_wgtnTabelle, um die Funktionen "Keine Daten" anzuzeigen.

Bildbeschreibung hier eingeben

Dies erscheint mir jedoch nicht elegant. Viel intuitiver wäre es, ein Nullwertsymbol zu definieren. Vielleicht könnte dies vollkommen transparent sein, um mit dem, was gegenwärtig existiert, übereinzustimmen, oder es könnte eine Art gedämpftes Grau sein - was auch immer der Benutzer wünscht. Der Punkt ist, dass man derzeit zwei verschiedene Ebenen im Inhalt benötigt, um die Symbologie von Nullwerten zu handhaben. Dies bedeutet, dass Sie die Symbologie aller Features gleichzeitig ändern müssen (z. B. wenn Sie die Breite aller Ränder erhöhen möchten ), dies zweimal tun müssen: einmal in den Eigenschaften für das Feature mit der abgestuften Symbologie und einmal für die "Hintergrund" -Ebene, die das Null-Symbol behandelt.

Ist es in QGIS (2.6.1) möglich, ein Nullwertsymbol zu definieren, ohne eine "Kopie" derselben Ebene zu verwenden, die für die abgestufte Symbologie verwendet wird?

alphabetasoup
quelle
Was ist falsch daran, dieselbe Ebene zweimal mit unterschiedlicher Symbologie zu haben? Verwenden Sie möglicherweise die Attributfilterung, damit in beiden Layern kein Polygon angezeigt wird, wenn Sie beim Identifizieren oder bei der Geoverarbeitung Verwirrung stiften. Enthält der Join-Wert der nicht übereinstimmenden Features den Wert "Null" oder ist ein Wert in der Tabelle nicht enthalten?
Michael Stimson
1
1. Problem: Wenn ich die allgemeinen Eigenschaften von Features mit einem Wert und einer Null (z. B. Rahmenfarbe) steuern möchte, muss dies zweimal ausgeführt werden. Dies macht es viel einfacher, zu vergessen, eine von ihnen zu wechseln oder einen kleinen Fehler zu machen (z. B. falsche Graustufe für die Kontur). 2. Keine Probleme in Bezug auf Verwirrung bei der Geoverarbeitung, nur die Symbologie: Ich möchte das nullFeature in derselben Ebene symbolisieren . 3. Nicht nullübereinstimmende Features sind in ihrem Join-Wert enthalten (wie in der QGIS-Attributtabelle nach dem Join angegeben).
Buchstabensuppe
Außerdem wird es beim Erstellen einer Legende schwieriger, ein Beispiel ohne Daten aufzunehmen, da dieses Symbol aus einem anderen Layer stammt.
Buchstabensuppe
2
Du hast recht. Es gibt keine Möglichkeit, im Dialogfeld mit den abgestuften Symbolen die Option "NULL-Funktionen wie diese anzeigen" auszuwählen. Zeilen mit NULL-Werten werden einfach nicht angezeigt.
Michael Stimson

Antworten:

17

Wie bereits bei @ MichaelMiles-Stimson erwähnt, scheint es keine Möglichkeit zu geben, NULL- Funktionen zu symbolisieren . Es gibt jedoch eine Alternative, bei der Sie einen Filter erstellen, um QGIS zu zwingen, NULL- Werte als Ganzzahl wie 0 zu behandeln . Ich habe ein Beispiel eingefügt, in dem drei einfache Polygone mit jeweils einem bestimmten Wert erstellt wurden:

3 Polygone

Attributtabelle

Hier ist die abgestufte Symbologie, die ich mit dem folgenden Befehl verwendet habe:

case when "Some_Value" IS NULL then 0 else "Some_Value" end

Absolvierte Symbologie

Hoffe das hilft!

Joseph
quelle
Dies ist sehr hilfreich und ich werde dies wahrscheinlich in die Praxis umsetzen. Das Problem, das ich erwarte, ist, dass 0 ein sinnvoller Wert in meinem Datensatz ist. Ich könnte wahrscheinlich -1 oder so etwas verwenden. In beiden Fällen wäre die automatische Erkennung von Klassenbrüchen jedoch etwas unhandlich. Vielleicht sollte ich eine Feature-Anfrage für diese einreichen, da es jetzt klar ist, dass die Problemumgehungen weniger als ideal sind.
Buchstabensuppe
Ja, das Einschließen von NULLWerten könnte sehr nützlich sein. Es ist keine schöne Umgehung, aber Sie können jederzeit eine Funktionsanforderung einreichen und hoffen, dass sie in der nächsten Version verfügbar ist :)
Joseph
6

Ich weiß, dass es beantwortet wurde, aber nur um eine andere Option zu geben:

Sie können das Feld einfach ohne Filter oder Wert verlassen (ich weiß, dass es für KATEGORISIERT oder REGELBASIERT funktioniert):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_classification/classification.html

Bildbeschreibung hier eingeben

Ich benutze QGIS 2.10 und es funktioniert.

Marcos Saito
quelle
Es ist immer schön, mehr Methoden zum Lösen oder Umgehen eines Problems zu kennen! +1
Joseph
1
Ermutigend, diese Verbesserung seit 2.6 zu sehen, oder? Können Sie bestätigen, dass es funktioniert, wenn die Nullwerte aus einer verknüpften Tabelle stammen?
Buchstabensuppe
1
Ein paar Anmerkungen dazu. Die leere oder NULL-Symbologie in einer regelbasierten Symbologie wird auf ALLE Features angewendet. Die Regeln werden von oben nach unten angewendet, sodass sie möglicherweise von einer anderen Regel überlagert werden, der NULL-Wert jedoch auch vorhanden ist. Wichtig, wenn es sich um eine starke Symbologie handelt. Sie können
Ihre
@ Vesanto, ich weiß nicht, ob ich es habe oder ob es ein Problem ist. In meinem Fall füge ich einem SHP aus Konturlinien, die ursprünglich keine Z-Werte hatten (Z = NULL), Z-Werte hinzu. Ich habe die Features mit NULL-Werten auf Rot und die mit einem beliebigen Wert auf Schwarz gesetzt. Sobald ich einen Z-Wert festgelegt habe, wechselt das Feature (die Konturlinie) beim Bearbeiten von Rot zu Schwarz. Auf diese Weise kenne ich diejenigen, für die ich noch keinen Z-Wert festlegen muss.
Marcos Saito
@Marcos es wird in deinem Fall kein Problem sein. Nehmen wir an, die Linie war von Anfang an rot und Sie wollten sie unsichtbar machen, sobald sie nicht mehr null war. Das würde nicht funktionieren.
HeikkiVesanto
4

Ähnlich wie bei anderen Benutzern ist die beste Option, regelbasierte Symbole zu verwenden. So vermeiden Sie das manuelle Erstellen der Regeln:

  1. Ändern Sie den Symboltyp in Abgestuft .
  2. Definieren Sie die Symbolspalte, Farben, Intervalle usw. wie gewohnt Abgestufte Symbole mit Nullwerten werden nicht angezeigt
  3. Ändern Sie den Symboltyp von Abgestuft in Regelbasiert . Die im vorherigen Schritt definierten Symbole werden übernommen. Klicken Sie auf die Schaltfläche Symbol hinzufügen und wählen Sie ELSE . Ändern Sie den Stil entsprechend. Diese ELSE-Symbolklasse fängt alle Werte ab, die noch nicht symbolisiert wurden, einschließlich der Nullwerte. Hinzufügen von ELSE Catch-All-Symbol
  4. OK klicken. Nullwerte werden jetzt symbolisiert. Abgestufte Symbole, einschließlich Nullwerte

(Getestet in QGIS 3.6.0)

Jesse Reilly
quelle
einfach und nützlich. Vielen Dank. Ich würde vorschlagen, dass QGIS eine Option zum Ausschließen von Werten für die abgestufte Klassifizierung hat. Ich bin auf einige Verwirrung gestoßen, als ich versucht habe, mit Knotenwerten zu klassifizieren, die als -1, -999 usw. gekennzeichnet sind (unter Verwendung von QGIS 3.14 LTR). Glücklicherweise ignoriert QGIS automatisch Nullwerte, zumindest wenn Sie eine Graduierte Symbologie ausführen.
Iván Santiago,