Erstellen einer bedingten Anweisung im QGIS Field Calculator

15

Ich habe einige der anderen Fragen und Antworten zu diesem Thema nachgeschlagen, aber keine hat angesprochen, was ich tun möchte.

Ich habe einen großen Datensatz und möchte ein Feld nach Werten ab einer bestimmten Menge durchsuchen (in diesem Fall 20). Wenn der Wert größer als 20 ist, möchte ich andernfalls den Wert 1 in einem anderen Feld zurückgeben einen Wert von 0 zurückgeben.

Ich habe versucht, etwas ohne Glück zu schreiben.

Ich benutze QGIS 2.8.

user35127
quelle
Ich versuche diesen Express in Qgis herauszufinden, aber er hat keine Ergebnisse. Wenn "A" = "1" und "LENGHT" <= 1, dann "C" = "4", dann
FEHLER

Antworten:

29

Der einfache Weg

Am einfachsten ist es, mit dem Ausdruck ein neues Feld zu erstellen

"cat" > 20

Dieser Ausdruck wird zu einem booleschen Wert Wahr / Falsch ausgewertet, der als Ganzzahl 1 oder 0 dargestellt wird.

Virtuelle Felder

Sie können auch ein virtuelles Feld erstellen, das automatisch einen aktualisierten Wert zurückgibt, falls sich die Werte catändern (z. B. Sie bearbeiten den Layer). Beachten Sie, dass die Werte der virtuellen Felder nicht im Datensatz gespeichert werden und nur in diesem QGIS-Projekt sichtbar sind.

Mehr als boolesch

Wenn Sie mehr als ein einfaches "Größer als" haben, müssen Sie verwenden

CASE 
  WHEN "cat" > 100 THEN 2
  WHEN "cat" > 10 THEN 1
  ELSE 0
END
Matthias Kuhn
quelle
6

Ich habe das gerade getestet: Sie können die Bedingung mehrmals verwenden:

WHEN    cat =   1   THEN    205
WHEN    cat =   2   THEN    215
WHEN    cat =   3   THEN    225
WHEN    cat =   4   THEN    235
...

....

Elmo
quelle
4

So etwas vielleicht:

case 
when "FIELD" > 20 then 1
else 0 
end

Feldrechner

Joseph
quelle