Felder berechnen (mehrere) (Datenmanagement)

Zusammenfassung

Hiermit werden die Werte von mindestens zwei Feldern für eine Feature-Class, einen Feature-Layer oder ein Raster berechnet.

Verwendung

  • Weitere Informationen über Python-Ausdrücke finden Sie unter Feld berechnen – Python-Beispiele.

    Weitere Informationen über Arcade-Ausdrücke finden Sie in der ArcGIS Arcade-Dokumentation.

    Weitere Informationen zu SQL-Ausdrücken finden Sie unter Berechnen von Feldwerten.

  • Bei Verwendung mit einer Feature-Auswahl werden nur die ausgewählten Datensätze aktualisiert, wie zum Beispiel bei den mit einer Abfrage im Werkzeug Feature-Layer erstellen oder Layer nach Attributen auswählen erstellten Features.

  • Vorhandene Feldwerte werden überschrieben. Erstellen Sie eine Kopie der Eingabetabelle, wenn Sie die ursprünglichen Werte beibehalten möchten.

  • Bei Berechnungen mit Python müssen Feldnamen in Ausrufezeichen eingeschlossen werden (z. B. !fieldname!).

    Bei Berechnungen mit Arcade müssen Feldnamen das Präfix $feature. (beispielsweise $feature.fieldname) erhalten.

  • Wenn Sie eine Zeichenfolge für ein Text- oder Zeichenfeld berechnen möchten, muss die Zeichenfolge im Dialogfeld in doppelte Anführungszeichen (z. B. "Zeichenfolge") gesetzt werden, in der Befehlszeile und in Skripten dagegen muss die Zeichenfolge zusätzlich in einfache Anführungszeichen eingeschlossen werden (z. B. '"string"').

  • Wenn Sie einen numerischen Wert für ein Feld berechnen möchten, geben Sie im Parameter Ausdruck nur den numerischen Wert ohne Anführungszeichen ein.

  • Sie können komplexe Ausdrücke mit dem Parameter Code-Block erstellen. Geben Sie den Codeblock direkt im Dialogfeld oder als Zeichenfolge bei der Skripterstellung ein. Der Ausdruck und der Code-Block sind miteinander verbunden. Der Code-Block muss zurück auf den Ausdruck verweisen. Das Ergebnis des Code-Blocks muss an den Ausdruck übergeben werden.

    Der Parameter Code-Block wird nur für Python-Ausdrücke unterstützt.

  • Sie können das Python-Modul math und die Formatierung im Code-Block verwenden. Sie können auch weitere Module importieren. Das Modul math enthält neben zahlentheoretischen und Repräsentationsfunktionen auch Potenz- und Logarithmusfunktionen sowie trigonometrische Funktionen, Winkelkonvertierungsfunktionen, hyperbolische Funktionen und mathematische Konstanten. Weitere Informationen zum Modul math finden Sie in der Hilfe von Python.

  • Python-Ausdrücke können mit Eigenschaften aus dem Geometry-Objekt, darunter type, extent, centroid, firstPoint, lastPoint, area, length, isMultipart und partCount (z. B. !shape.area!) erstellt werden.

  • Sie können die Geometrieeigenschaften für area und length in Python-Ausdrücken mit einer Flächeneinheit oder linearen Einheit verwenden, um den Wert in eine andere Maßeinheit (z. B. !shape.length@kilometers!) zu konvertieren. Wenn die Daten in einem geographischen Koordinatensystem gespeichert sind und eine lineare Einheit wie Kilometer oder Meilen angegeben wird, wird die Länge anhand eines geodätischen Algorithmus berechnet. Die Verwendung von Flächeneinheiten für geographische Daten führt zu fraglichen Ergebnissen, da die Dezimalgrade nicht rund um den Globus konsistent sind.

    Weitere Informationen zu Geoverarbeitungswerkzeugen und linearen Einheiten sowie Flächeneinheiten

  • Python-Ausdrücke können verwendet werden, um die geodätische Fläche bzw. Länge eines Features mithilfe der Eigenschaften geodesicArea oder geodesicLength in Kombination mit Flächen- oder linearen Maßeinheiten (z. B. !shape.geodesicArea@hectares! oder !shape.geodesicLength@miles!) zu berechnen.

  • Bei der Berechnung von verbundenen Daten können die verbundenen Spalten nicht direkt berechnet werden. Sie können jedoch die Spalten der Quelltabelle direkt berechnen. Um die verbundenen Daten zu berechnen, fügen Sie der Karte zuerst die verbundenen Tabellen oder Layer hinzu. Sie können dann die Berechnungen an diesen Daten einzeln durchführen. Diese Änderungen zeigen sich in den verbundenen Spalten.

  • Python-Ausdrücke, bei denen versucht wird, Zeichenfolgenfelder, die NULL enthalten oder einen durch Null geteilten Wert, zu verbinden, geben NULL für diesen Feldwert zurück.

  • SQL-Ausdrücke ermöglichen schnellere Berechnungen für Feature-Services und Enterprise-Geodatabases. Statt Features oder Zeilen einzeln nacheinander zu berechnen, wird eine einzelne Anforderung an den Server oder die Datenbank gesendet. Dies führt zu schnelleren Berechnungen.

    Nur Feature-Services und Enterprise-Geodatabases unterstützen SQL-Ausdrücke. Verwenden Sie für andere Formate Python- oder Arcade-Ausdrücke.

    Die Verwendung der Option SQL des Parameters Ausdruckstyp unterliegt den folgenden Beschränkungen:

    • Die Option wird nur für Db2-, Oracle-, PostgreSQL-, SAP HANA- und SQL Server-Enterprise-Geodatabases unterstützt.
    • Die Berechnung von Feldwerten in verbundenen Tabellen wird nicht unterstützt.
    • Versionierte und archivierte Enterprise-Geodatabase-Daten werden nicht unterstützt.
    • Die Möglichkeit, Geoverarbeitungsvorgänge rückgängig zu machen wird nicht unterstützt.

    Hilfe zu SQL-Ausdrücken finden Sie in der Dokumentation Ihres Datenbankanbieters.

Parameter

BeschriftungErläuterungDatentyp
Eingabetabelle

Die Tabelle, die die Felder enthält, die mit den neuen Berechnungen aktualisiert werden.

Table View; Raster Layer; Mosaic Layer
Ausdruckstyp

Geben Sie den zu verwendenden Ausdruckstyp an.

Weitere Informationen über Python-Ausdrücke finden Sie unter Feld berechnen – Python-Beispiele.

Weitere Informationen über Arcade-Ausdrücke finden Sie in der ArcGIS Arcade-Dokumentation.

Weitere Informationen zu SQL-Ausdrücken finden Sie unter Berechnen von Feldwerten.

  • Python 3Es wird der Ausdruckstyp "Python" verwendet. Dies ist die Standardeinstellung.
  • ArcadeEs wird der Ausdruckstyp "Arcade" verwendet.
  • SQLEs wird der SQL-Ausdruckstyp verwendet.
String
Felder

Die zu berechnenden Felder, ihre Ausdrücke und eine WHERE-Klausel.

Der optionale SQL-Ausdruck wird zum Auswählen einer Teilmenge der Datensätze verwendet. Nur Datensätze, die mit dieser WHERE-Klausel übereinstimmen, werden berechnet. Wenn die WHERE-Klausel leer gelassen wird, werden alle Datensätze berechnet. Weitere Informationen zur SQL-Syntax finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.

Value Table
Code-Block
(optional)

Ein Code-Block, der für komplexe Ausdrücke verwendet wird.

Zum Zurückgeben von mehreren Werten kann keine Funktion verwendet werden.

String
Domänen erzwingen
(optional)

Gibt an, ob Felddomänenregeln erzwungen werden.

  • Aktiviert: Felddomänenregeln werden erzwungen. Wenn ein Feld nicht aktualisiert werden kann, bleibt der Feldwert unverändert, und das Werkzeug gibt eine Warnmeldung aus.
  • Deaktiviert: Felddomänenregeln werden nicht erzwungen. Hierbei handelt es sich um die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Ausgabetabelle

Die aktualisierten Tabellen.

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, {enforce_domains})
NameErläuterungDatentyp
in_table

Die Tabelle, die die Felder enthält, die mit den neuen Berechnungen aktualisiert werden.

Table View; Raster Layer; Mosaic Layer
expression_type

Geben Sie den zu verwendenden Ausdruckstyp an.

  • PYTHON3Es wird der Ausdruckstyp "Python" verwendet. Dies ist die Standardeinstellung.
  • ARCADEEs wird der Ausdruckstyp "Arcade" verwendet.
  • SQLEs wird der SQL-Ausdruckstyp verwendet.

Weitere Informationen über Python-Ausdrücke finden Sie unter Feld berechnen – Python-Beispiele.

Weitere Informationen über Arcade-Ausdrücke finden Sie in der ArcGIS Arcade-Dokumentation.

Weitere Informationen zu SQL-Ausdrücken finden Sie unter Berechnen von Feldwerten.

String
fields
[[Field Name, Expression, {Where Clause}],...]

Die zu berechnenden Felder, ihre Ausdrücke und eine WHERE-Klausel.

Der optionale SQL-Ausdruck wird zum Auswählen einer Teilmenge der Datensätze verwendet. Nur Datensätze, die mit dieser WHERE-Klausel übereinstimmen, werden berechnet. Wenn die WHERE-Klausel leer gelassen wird, werden alle Datensätze berechnet. Weitere Informationen zur SQL-Syntax finden Sie unter SQL-Referenz für in ArcGIS verwendete Abfrageausdrücke.

Value Table
code_block
(optional)

Ein Code-Block, der für komplexe Ausdrücke verwendet wird.

Zum Zurückgeben von mehreren Werten kann keine Funktion verwendet werden.

String
enforce_domains
(optional)

Gibt an, ob Felddomänenregeln erzwungen werden.

  • ENFORCE_DOMAINSFelddomänenregeln werden erzwungen.
  • NO_ENFORCE_DOMAINSFelddomänenregeln werden nicht erzwungen. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_table

Die aktualisierten Tabellen.

Table View; Raster Layer; Mosaic Layer

Codebeispiel

CalculateFields: Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion CalculateFields im unmittelbaren Modus mit dem Ausdruckstyp Python verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
CalculateFields: Beispiel 2 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion CalculateFields im unmittelbaren Modus mit dem Ausdruckstyp SQL verwendet wird.

import arcpy
arcpy.CalculateFields_management("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
CalculateFields: Beispiel 3 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion CalculateFields im unmittelbaren Modus mit dem Ausdruckstyp Arcade verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])