Feld berechnen (Data Management)

Zusammenfassung

Hiermit werden die Werte eines Feldes 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 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.

  • Sie können die Berechnung jeweils nur für ein Feld durchführen. Für mehrere Berechnungen verwenden Sie das Werkzeug Felder berechnen.

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

  • Vorversion:

    arcgis.rand() wird ab ArcGIS Pro 2.0 nicht mehr unterstützt. Stattdessen sollten vergleichbare Funktionen unter Verwendung des random-Moduls von Python verwendet werden. Um das random-Modul erfolgreich zu verwenden, fügen Sie es als Import in den Parameter Code-Block ein.

  • Mit dem Code-Block-Parameter können komplexe Ausdrücke erstellt werden. Sie können den Codeblock direkt im Dialogfeld oder als fortlaufende Zeichenfolge in der Skripterstellung eingeben. 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.

    • Nachfolgend finden Sie die Schlüsselwörter für flächenbezogene Maßeinheiten:
      • ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
    • Nachfolgend finden Sie die Schlüsselwörter für lineare Maßeinheiten:
      • CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
  • 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.

  • ArcGIS-Anwendungen verwenden UTF-16-LE-Codierung zum Lesen und Schreiben von .cal-Dateien. Andere Anwendungen (z. B. Notepad) können zum Erstellen oder Ändern von .cal-Dateien verwendet werden, solange die Ausgabe mit UTF-16-LE-Codierung geschrieben wird. Die Verwendung einer anderen Encodierung führt zu einer Datei, die nicht in den Code-Block geladen wird.

  • 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 SQL-Option des Parameters Ausdruckstyps unterliegt in Enterprise-Geodatabases den folgenden Beschränkungen:

    • Die Option wird nur für Db2-, Oracle-, PostgreSQL-, SAP HANA- und SQL Server-Datenbanken unterstützt.
    • Die Berechnung von Feldwerten in verbundenen Tabellen wird nicht unterstützt.
    • Versionierte 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 das Feld enthält, das mit der neuen Berechnung aktualisiert wird.

Mosaic Layer; Raster Layer; Table View
Feldname (vorhanden oder neu)

Das Feld, das durch die neue Neuberechnung aktualisiert wird.

Wenn unter dem angegebenen Namen kein Feld in der Eingabetabelle vorhanden ist, wird ein entsprechendes Feld hinzugefügt.

Field
Ausdruck

Der einfache Berechnungsausdruck zum Generieren des Wertes, der in die ausgewählten Zeilen eingefügt wird.

SQL Expression
Ausdruckstyp
(optional)

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.

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 wesentlich schnelleren Berechnungen.

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

  • Python 3Es wird der Ausdruckstyp "Python" verwendet. Dies ist die Standardeinstellung.
  • ArcadeEs wird der Ausdruckstyp "Arcade" verwendet.
  • SQLEs wird der SQL-Ausdruckstyp verwendet.
String
Code-Block
(optional)

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

String
Feldtyp
(optional)

Gibt den Feldtyp des neuen Feldes an. Dieser Parameter wird nur verwendet, wenn der Feldname nicht in der Eingabetabelle vorhanden ist.

Wenn es sich um ein Feld vom Typ "Text" handelt, hat das neue Feld eine Feldlänge von 512. Bei Shapefiles und dBASE-Dateien hat das Feld eine Länge von 254. Die Länge des neuen Feldes kann mit dem Werkzeug Feld ändern angepasst werden.

  • TextEs kann eine beliebige Zeichenfolge verwendet werden.
  • Float (einfache Genauigkeit)Es können Bruchzahlen zwischen -3.4E38 und 1.2E38 verwendet werden.
  • Double (doppelte Genauigkeit)Es können Bruchzahlen zwischen -2.2E308 und 1.8E308 verwendet werden.
  • Short (Short Integer)Es können ganze Zahlen zwischen -32.768 und 32.767 verwendet werden.
  • Long (Long Integer)Es können ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647 verwendet werden.
  • DateDer Wert für Datum und Uhrzeit wird verwendet.
  • Blob (Binärdaten)Es wird eine lange Abfolge von binären Zahlen verwendet.
  • Raster-BilddatenEs werden Rasterbilder verwendet. 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.
  • GUID (Globally Unique Identifier)Es wird ein weltweit eindeutiger Identifikator verwendet.
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
Aktualisierte Eingabetabelle

Die aktualisierte Tabelle.

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateField(in_table, field, expression, {expression_type}, {code_block}, {field_type}, {enforce_domains})
NameErläuterungDatentyp
in_table

Die Tabelle, die das Feld enthält, das mit der neuen Berechnung aktualisiert wird.

Mosaic Layer; Raster Layer; Table View
field

Das Feld, das durch die neue Neuberechnung aktualisiert wird.

Wenn unter dem angegebenen Namen kein Feld in der Eingabetabelle vorhanden ist, wird ein entsprechendes Feld hinzugefügt.

Field
expression

Der einfache Berechnungsausdruck zum Generieren des Wertes, der in die ausgewählten Zeilen eingefügt wird.

SQL Expression
expression_type
(optional)

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.

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 wesentlich schnelleren Berechnungen.

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

String
code_block
(optional)

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

String
field_type
(optional)

Gibt den Feldtyp des neuen Feldes an. Dieser Parameter wird nur verwendet, wenn der Feldname nicht in der Eingabetabelle vorhanden ist.

Wenn es sich um ein Feld vom Typ "Text" handelt, hat das neue Feld eine Feldlänge von 512. Bei Shapefiles und dBASE-Dateien hat das Feld eine Länge von 254. Die Länge des neuen Feldes kann mit dem Werkzeug Feld ändern angepasst werden.

  • TEXTEs kann eine beliebige Zeichenfolge verwendet werden.
  • FLOATEs können Bruchzahlen zwischen -3.4E38 und 1.2E38 verwendet werden.
  • DOUBLEEs können Bruchzahlen zwischen -2.2E308 und 1.8E308 verwendet werden.
  • SHORTEs können ganze Zahlen zwischen -32.768 und 32.767 verwendet werden.
  • LONGEs können ganze Zahlen zwischen -2.147.483.648 und 2.147.483.647 verwendet werden.
  • DATEDer Wert für Datum und Uhrzeit wird verwendet.
  • BLOBEs wird eine lange Abfolge von binären Zahlen verwendet.
  • RASTEREs werden Rasterbilder verwendet. 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.
  • GUIDEs wird ein weltweit eindeutiger Identifikator verwendet.
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

CalculateField – Beispiel 1 (Python-Fenster)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                '!VEG_TYPE!.split(" ")[-1]', "PYTHON3")
CalculateField – Beispiel 2 (eigenständiges Skript)

Weisen Sie Schwerpunktwerte mithilfe von CalculateField neuen Feldern zu.

# Name: CalculateField_centroids.py

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/airport.gdb"
 
# Set local variables
inFeatures = "parcels"
fieldName1 = "xCentroid"
fieldName2 = "yCentroid"
fieldPrecision = 18
fieldScale = 11
 
# Add fields
arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                          fieldPrecision, fieldScale)
arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                          fieldPrecision, fieldScale)
 
# Calculate centroid
arcpy.CalculateField_management(inFeatures, fieldName1, 
                                "!SHAPE.CENTROID.X!",
                                "PYTHON3")
arcpy.CalculateField_management(inFeatures, fieldName2, 
                                "!SHAPE.CENTROID.Y!",
                                "PYTHON3")
CalculateField – Beispiel 3 (eigenständiges Skript)

Verwenden Sie CalculateField mit einem Code-Block, um auf Bereichen basierende Werte zu berechnen.

# Name: CalculateField_ranges.py

# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data/airport.gdb"
 
# Set local variables
inTable = "parcels"
fieldName = "areaclass"
expression = "getClass(float(!SHAPE.area!))"

codeblock = """
def getClass(area):
    if area <= 1000:
        return 1
    if area > 1000 and area <= 10000:
        return 2
    else:
        return 3"""
 
# Execute AddField
arcpy.AddField_management(inTable, fieldName, "SHORT")
 
# Execute CalculateField 
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON3", 
                                codeblock)
CalculateField – Beispiel 4 (eigenständiges Skript)

Weisen Sie Zufallswerte mithilfe von CalculateField zu einem neuen Feld zu.

# Name: CalculateField_Random.py

# Import system modules
import arcpy
import random
 
# Set environment settings
arcpy.env.workspace = "C:/data/airport.gdb"
  
# Set local variables
inFeatures = "parcels"
fieldName = "RndValue"
expression = "random.randint(0, 10)"
code_block = "import random"
 
# Execute AddField
arcpy.AddField_management(inFeatures, fieldName, "LONG")
 
# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON3", 
                                code_block)
CalculateField – Beispiel 5 (Python-Fenster)

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

import arcpy
arcpy.env.workspace = "C:/data/fgdb.gdb"
arcpy.CalculateField_management("data", "new_value", "$feature.value1 + $feature.value2", "ARCADE")
CalculateField – Beispiel 6 (Python-Fenster)

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

import arcpy
feature_service = "<a feature service url>"
arcpy.CalculateField_management("data", "NEW_VALUE", "SAMPLE * (BASELINE - 40)", "SQL")

Umgebungen

Sonderfälle

Felddomänen-Beschreibungen übertragen

Ist diese Umgebungseinstellung aktiviert, werden alle Felder mit zugeordneter Domäne die Domänenbeschreibung statt des Feldwertes verwenden. Werte aus Feldern, die über keine Domäne verfügen, bleiben unverändert.

Lizenzinformationen

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

Verwandte Themen