Verwenden des Werkzeugs "Feld berechnen"

The Calculate Field tool is located in the Data Management toolbox in the Fields toolset. This is the same tool that is called when you click the Field Calculator command from the field shortcut menu of an attribute table. When performing field calculations, it is important to know what type of data you are using and in what context it is going to be used in the future. The syntax that must be used in a calculation expression differs depending on the data source and scripting language.

The following includes a number of important tips and best practices for using the Calculate Field tool.

Tipps und Empfehlungen für das Arbeiten mit dem Werkzeug "Feld berechnen"

Hiermit werden die Werte eines Feldes für eine Feature-Class, ein Feature-Layer oder einen Raster-Katalog berechnet.

Expressions can be created using VBScript or a standard Python format. The formatting style of the string used for the expression should be appropriate for the environment (type).

Python-Ausdrücke können mit Eigenschaften aus dem Geometrieobjekt (type, extent, centroid, firstPoint, lastPoint, area, length, isMultipart, partCount) erstellt werden.

Python-Ausdrücke können die Geometrieeigenschaften für die Fläche (area) und Länge (length) mit einer Flächeneinheit oder linearen Einheit verwenden, um den Wert in eine andere Maßeinheit zu konvertieren (z. B. !shape.length@kilometers!). 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.

!shape.area@acres!

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

Sie können die Berechnung jeweils nur für ein Feld durchführen.

Fields are always enclosed in brackets [ ] for VBScript.

Bei Berechnungen mit Python müssen Feldnamen in Ausrufezeichen (!feldname!) eingeschlossen werden.

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. '"Zeichenfolge"').

Sie können mit diesem Werkzeug auch Zeichenfelder aktualisieren. Ausdrücke mit Zeichenfolgen sollten in einfache Anführungszeichen gesetzt werden, z. B. [CHARITEM] = 'NEW STRING'. Wenn in der Zeichenfolge jedoch bereits einfache Anführungszeichen vorhanden sind, schließen Sie die Zeichenfolge in doppelte Anführungszeichen ein, z. B. [CHARITEM] = "TYPE'A'".

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

The arcgis.rand() function is supported by the Calculate Field tool, and the expression type must be Python. The arcgis.rand() function was created for ArcGIS tools and should not be confused with the Python Rand() function.

Der Ausdruck und der Codeblock sind miteinander verbunden. Der Codeblock muss zurück auf den Ausdruck verweisen. Das Ergebnis des Codeblocks muss an den Ausdruck übergeben werden.

Das Python-Modul "math" und die entsprechende Formatierung stehen für die Verwendung im Codeblock-Parameter zur Verfügung. Weitere Module können importiert werden. 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.

Gespeicherte VB CAL-Dateien aus früheren Versionen von ArcGIS können möglicherweise verwendet werden oder erfordern minimale Änderungen. Wenn Sie über VBA-Code aus früheren Versionen verfügen, worin ArcObjects verwendet werden, müssen Sie die Berechnungen ändern, damit sie in 10.0 verwendet werden können.

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

The expression type must be Python when running Calculate Field with ArcGIS Engine or ArcGIS Server. Only use Python as the expression type whenever the tool is included in a model that will be published to ArcGIS Server.

Code-Blockbeispiele, in denen das Werkzeug "Feld berechnen" verwendet wird

Beispiel für CalculateField: Berechnen von Schwerpunkten

Weisen Sie Schwerpunktwerte mithilfe von CalculateField neuen Feldern zu.

# Name: CalculateField_Centroids.py
# Description: Use CalculateField to assign centroid values to new fields

 
# Import system modules
import arcpy
from arcpy import env

try: 
    # Set environment settings
    env.workspace = "C:/data/airport.gdb"
 
    # Set local variables
    inFeatures = "parcels"
    fieldName1 = "xCentroid"
    fieldName2 = "yCentroid"
    fieldPrecision = 18
    fieldScale = 11
    # Expressions are calculated using the Shape Field's geometry property
    expression1 = "float(!SHAPE.CENTROID!.split()[0])"
    expression2 = "float(!SHAPE.CENTROID!.split()[1])"
 
    # Execute AddField
    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                              fieldPrecision, fieldScale)
    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                              fieldPrecision, fieldScale)
 
    # Execute CalculateField 
    arcpy.CalculateField_management(inFeatures, fieldName1, expression1,
                                    "PYTHON")
    arcpy.CalculateField_management(inFeatures, fieldName2, expression2,
                                    "PYTHON")
except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

Beispiel für CalculateField: Berechnen von Bereichen

Verwenden Sie CalculateField mit einem Codeblock, um auf Bereichen basierende Werte zu berechnen.

# Name: CalculateField_Ranges.py
# Description: Use CalculateField with a codeblock to calculate values
#  based on ranges

 
# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
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, "PYTHON", 
                                codeblock)

Beispiel für CalculateField: Berechnen von Zufallswerten

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

# Name: CalculateField_Random.py
# Description: Use CalculateField to assign random values to a new field
 
  
# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
env.workspace = "C:/data/airport.gdb"
  
# Set local variables
inFeatures = "parcels"
fieldName = "RndValue"
expression = "arcgis.rand('Integer 0 10')"
 
# Execute AddField
arcpy.AddField_management(inFeatures, fieldName, "LONG")
 
# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON")

Verwandte Themen


7/10/2012