Felder berechnen (mehrere) (Data Management)

Zusammenfassung

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

Verwendung

    Vorsicht:

    Mit diesem Werkzeug werden die Eingabedaten geändert. Weitere Informationen und Strategien zur Vermeidung unerwünschter Datenänderungen finden Sie unter Werkzeuge, die Eingabedaten ändern oder aktualisieren.

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

    Weitere Informationen über Arcade-Ausdrücke finden Sie unter ArcGIS Arcade in der Developer-Hilfe.

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

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

  • In den Arcade-Ausdrücken dieses Werkzeugs wird das Arcade-Profil "Feldberechnung" verwendet. Ein Arcade-Profil ist ein Kontext, in dem ein Arcade-Ausdruck ausgewertet und verstanden wird. Wenn ein Arcade-Ausdruck ausgewertet wird, wird der Rückgabewert in den Feldtyp des Ausgabewerts umgewandelt.

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

  • Vorhandene Feldwerte werden überschrieben. Um die ursprünglichen Werte beizubehalten, erstellen Sie eine Kopie der Eingabetabelle als Sicherung, oder verwenden Sie die Option Rückgängig aktivieren im Bereich Geoverarbeitung.

  • 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.

  • Hinweis:

    Um Zeitwerte zwischen Feldtypen (Datum, Nur Datum, Nur Zeit, Zeitstempelversatz und Text) zu übertragen, verwenden Sie stattdessen das Werkzeug Zeitfeld konvertieren.

  • 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 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 an.

  • 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.

  • Zum Berechnen von Geometrieinformationen in Python verwenden Sie Geometry-Objekteigenschaften. Verwenden Sie beispielsweise zum Berechnen der Anzahl der Stützpunkte in einem Feature den Ausdruck !shape.pointCount!.

    Hinweis:

    Das Werkzeug Geometrieattribute berechnen unterstützt ähnliche Berechnungen.

    Zum Berechnen der Fläche und Länge in Python verwenden Sie die Methoden getArea und getLength mit einer Methode und einem Einheitstyp.

    • Zum Berechnen der geodätischen Fläche von Polygonen in Quadratkilometern verwenden Sie den folgenden Ausdruck:
      !shape.getArea('GEODESIC', 'SQUAREKILOMETERS')!
    • Zum Berechnen der planaren Länge von Polylinien (oder Polygonen) in Yards verwenden Sie den folgenden Ausdruck:
      !shape.getLength('PLANAR', 'YARDS')

    Weitere Informationen finden Sie in den Abschnitten zu ArcPy Polygon- und Polyline-Objekten.

    Weitere Informationen zu Geoverarbeitungswerkzeugen und linearen Einheiten sowie Flächeneinheiten

  • Beim Arbeiten mit verbundenen Daten können Sie nur Felder aus der Quelltabelle aktualisieren. Sie können keine Felder aus der verbundenen Tabelle aktualisieren. Zum Durchführen einer Berechnung für die verbundene Tabelle führen Sie die Berechnung direkt für die Tabelle durch.

  • 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.
    • Das Rückgängigmachen von Geoverarbeitungsvorgängen 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

Gibt den zu verwendenden Ausdruckstyp an.

Wenn die Eingabe ein Feature-Service ist, lautet der Standardausdruckstyp SQL. Für alle anderen Eingabearten lautet der Standardausdruckstyp Python.

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

Weitere Informationen über Arcade-Ausdrücke finden Sie unter ArcGIS Arcade in der Developer-Hilfe.

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

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

  • PythonEs wird der Ausdruckstyp "Python" verwendet.
  • ArcadeEs wird der Ausdruckstyp "Arcade" verwendet.
  • SQLEs wird der SQL-Ausdruckstyp verwendet.
  • VBScriptEs wird der Ausdruckstyp "VBScript" verwendet.
String
Felder

Die Felder, die berechnet werden sollen, die Ausdrücke, die berechnet werden sollen, und optionale WHERE-Klauseln und Feldtypen.

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.

Wenn unter dem angegebenen Namen kein Feld in der Eingabetabelle vorhanden ist, wird ein entsprechendes Feld hinzugefügt. Der Typ des Feldes wird anhand des Wertes für den Feldtyp festgelegt. Wird der Feldtyp nicht angegeben, wird das Feld als Textfeld hinzugefügt.

Die folgenden Feldtypen stehen zur Verfügung:

  • Short (16-Bit-Integer): Der Feldtyp ist "Short". Felder des Typs "Short" unterstützen ganze Zahlen zwischen -32.768 und 32.767.
  • Long (32-Bit-Integer): Der Feldtyp ist "Long". Felder des Typs "Long" unterstützen ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647.
  • Big Integer (64-Bit-Ganzzahl): Als Feldtyp wird "Bit Integer" verwendet. Felder des Typs "Big Integer" unterstützen ganze Zahlen zwischen -(253) und 253.
  • Float (32-Bit-Gleitkomma): Der Feldtyp ist "Float". Felder des Typs "Float" unterstützen Bruchzahlen zwischen -3,4E38 und 1,2E38.
  • Double (64-Bit-Gleitkomma): Der Feldtyp ist "Double". Felder des Typs "Double" unterstützen Bruchzahlen zwischen -2,2E308 und 1,8E308.
  • Text: Der Feldtyp ist "Text". Felder des Typs "Text" unterstützen eine Zeichenfolge.
  • Datum: Der Feldtyp ist "Datum". Felder des Typs "Datum" unterstützen Datums- und Uhrzeitwerte.
  • Datum (hohe Genauigkeit): Der Feldtyp ist ein Datum mit hoher Genauigkeit. Datumsfelder mit hoher Genauigkeit unterstützen Datums- und Uhrzeitwerte mit Millisekunden.
  • Nur Datum: Der Feldtyp ist "Nur Datum". Felder des Typs "Nur Datum" unterstützen Datumswerte ohne Uhrzeitwerte.
  • Nur Zeit: Der Feldtyp ist "Nur Zeit". Felder des Typs "Nur Zeit" unterstützen Uhrzeitwerte ohne Datumswert.
  • Zeitstempelversatz: Der Feldtyp ist "Zeitstempelversatz". Felder des Typs "Zeitstempelversatz" unterstützen ein Datum, eine Uhrzeit und einen Versatz vom UTC-Wert.
  • Blob (Binärdaten): Der Feldtyp ist "BLOB". Felder des Typs "BLOB" unterstützen Daten, die als lange Abfolge von binären Zahlen gespeichert sind. Sie benötigen ein spezielles Programm zum Laden und Anschauen oder eine Anwendung eines Drittanbieters, um Objekte in ein BLOB-Feld zu laden bzw. den Inhalt in einem BLOB-Feld anzuzeigen.
  • GUID (Globally Unique Identifier): Der Feldtyp ist "GUID". In GUID-Feldern werden Zeichenfolgen im Format von Registrierungszeichenfolgen gespeichert, die aus 36 Zeichen in geschweiften Klammern bestehen.
  • Raster-Bilddaten: Der Feldtyp ist "Raster". Mit Raster-Feldern können Raster-Daten in oder zusammen mit der Geodatabase gespeichert werden. Es können zwar alle von der ArcGIS-Software unterstützten Raster-Dataset-Formate gespeichert werden, es wird jedoch empfohlen, nur kleine Bilder zu verwenden.
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 aktualisierte Tabelle.

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

Gibt den zu verwendenden Ausdruckstyp an.

  • PYTHON3Es wird der Ausdruckstyp "Python" verwendet.
  • ARCADEEs wird der Ausdruckstyp "Arcade" verwendet.
  • SQLEs wird der SQL-Ausdruckstyp verwendet.
  • VBEs wird der Ausdruckstyp "VBScript" verwendet.

Wenn die Eingabe ein Feature-Service ist, lautet der Standardausdruckstyp SQL. Für alle anderen Eingabearten lautet der Standardausdruckstyp PYTHON3.

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

Weitere Informationen über Arcade-Ausdrücke finden Sie unter ArcGIS Arcade in der Developer-Hilfe.

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

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

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

Die Felder, die berechnet werden sollen, die Ausdrücke, die berechnet werden sollen, und optionale WHERE-Klauseln und Feldtypen.

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.

Wenn unter dem angegebenen Namen kein Feld in der Eingabetabelle vorhanden ist, wird ein entsprechendes Feld hinzugefügt. Der Typ des Feldes wird anhand des Wertes für den Feldtyp festgelegt. Wird der Feldtyp nicht angegeben, wird das Feld als Textfeld hinzugefügt.

Die folgenden Feldtypen stehen zur Verfügung:

  • SHORT: Der Feldtyp ist "Short". Felder des Typs "Short" unterstützen ganze Zahlen zwischen -32.768 und 32.767.
  • LONG: Der Feldtyp ist "Long". Felder des Typs "Long" unterstützen ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647.
  • BIGINTEGER: Der Feldtyp ist "Big Integer". Felder des Typs "Big Integer" unterstützen ganze Zahlen zwischen -(253) und 253.
  • FLOAT: Der Feldtyp ist "Float". Felder des Typs "Float" unterstützen Bruchzahlen zwischen -3,4E38 und 1,2E38.
  • DOUBLE: Der Feldtyp ist "Double". Felder des Typs "Double" unterstützen Bruchzahlen zwischen -2,2E308 und 1,8E308.
  • TEXT: Der Feldtyp ist "Text". Felder des Typs "Text" unterstützen eine Zeichenfolge.
  • DATE: Der Feldtyp ist "Datum". Felder des Typs "Datum" unterstützen Datums- und Uhrzeitwerte.
  • DATEHIGHPRECISION: Der Feldtyp ist ein Datum mit hoher Genauigkeit. Datumsfelder mit hoher Genauigkeit unterstützen Datums- und Uhrzeitwerte mit Millisekunden.
  • DATEONLY: Der Feldtyp ist "Nur Datum". Felder des Typs "Nur Datum" unterstützen Datumswerte ohne Uhrzeitwerte.
  • TIMEONLY: Der Feldtyp ist "Nur Zeit". Felder des Typs "Nur Zeit" unterstützen Uhrzeitwerte ohne Datumswert.
  • TIMESTAMPOFFSET: Der Feldtyp ist "Zeitstempelversatz". Felder des Typs "Zeitstempelversatz" unterstützen ein Datum, eine Uhrzeit und einen Versatz vom UTC-Wert.
  • BLOB: Der Feldtyp ist "BLOB". Felder des Typs "BLOB" unterstützen Daten, die als lange Abfolge von binären Zahlen gespeichert sind. Sie benötigen ein spezielles Programm zum Laden und Anschauen oder eine Anwendung eines Drittanbieters, um Objekte in ein BLOB-Feld zu laden bzw. den Inhalt in einem BLOB-Feld anzuzeigen.
  • GUID: Der Feldtyp ist "GUID". In GUID-Feldern werden Zeichenfolgen im Format von Registrierungszeichenfolgen gespeichert, die aus 36 Zeichen in geschweiften Klammern bestehen.
  • RASTER: Der Feldtyp ist "Raster". Mit Raster-Feldern können Raster-Daten in oder zusammen mit der Geodatabase gespeichert werden. Es können zwar alle von der ArcGIS-Software unterstützten Raster-Dataset-Formate gespeichert werden, es wird jedoch empfohlen, nur kleine Bilder zu verwenden.
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 aktualisierte Tabelle.

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.management.CalculateFields("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.management.CalculateFields("<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.management.CalculateFields(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])
CalculateFields: Beispiel 4 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion CalculateFields mit SQL-Ausdrücken verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"

# Calculate the Field1 field to -1 if the value is null.
# Calculate the Title field to remove any leading spaces if the first character
# is a space.
arcpy.management.CalculateFields(
    "parcels", "PYTHON3", 
    [['Field1', -1, "Field1 IS NULL"],
     ['Title', '!Address!.lstrip()', "Title LIKE ' %'"]])

Lizenzinformationen

  • Basic: Ja
  • Standard: Ja
  • Advanced: Ja

Verwandte Themen