Deutsch

Problem: Die Feldberechnung ist abgeschlossen, aber die Werte bleiben unverändert

Beschreibung

Die Feldberechnung ist ein leistungsfähiges Werkzeug, mit dem sich mehrere Feldwerte in einem Schritt ändern lassen. Das spart im Vergleich zu Einzelberechnungen Zeit. Bei der Verwendung dieser Funktion müssen allerdings Details wie Feldtyp, Länge und Domänen sehr genau beachtet werden. Es kann vorkommen, dass trotz fehlerfreier Ausführung der Feldberechnung die Feldwerte unverändert beibehalten werden.

Ursache

Die Funktion hat einen entscheidenden Nachteil: Der Benutzer muss die Feldtypen der verwendeten Felder kennen.

Beispiel: Ein Benutzer hat eine zweispaltige Tabelle und möchte – nur für den Fall, dass beide übereinstimmen – eine dritte im Textformat ausfüllen:
Image showing the input table with three fields.

Verwenden des Vergleichscodes in der Feldberechnung:

Image showing code in Field Calculator where, within the code block, the statement "if Field1==Field2:".
Der Vorgang wird gemäß Menü Geoverarbeitung > Ergebnisse erfolgreich abgeschlossen, die dritte Spalte ändern sich allerdings nicht.
Results window showing that Field Calculator completed successfully.
Das liegt daran, dass die beiden Eingabefelder unterschiedliche Typen aufweisen, obwohl sie zum Teil gleich erscheinen (1 in FieldName1 und 1 in FieldName2):
Screenshot of FieldName1 properties showing Type: StringScreenshot of FieldName2 properties showing Type: Short
Die Zeichenfolge "1" ist demnach nicht gleichzusetzen mit der Short-Integer-Zahl "1". Da der "If"-Anweisung im Codeblock das "Else"-Pendant fehlt, wird kein Wert zum Auffüllen des Feldes zurückgegeben.

Lösung oder Problemumgehung

Prüfen Sie also bei Eingaben in die Feldberechnung immer die Feldtypen. Feldtypen lassen sich mittels Code wie str() oder int() temporär ändern, sodass Eingaben in denselben Typ umgewandelt werden und die Feldberechnung erfolgreich verläuft. In diesem Beispiel kann eine "Else"-Anweisung hinzugefügt werden.
Image showing the added line "else: return "The values are different""
Diese führt dann zu einer Ausgabe, in der die "If"-Anweisung zu "false" (falsch) ausgewertet wird, was Anlass zu weiterer Recherche geben sollte. Wenn dann schließlich der Grund der falschen "If"-Anweisung bekannt ist, liegt es nahe, die Werte und Typen der Felder zu untersuchen.
Image showing the third column now is populated with "The values are different"

Referenzinformationen