Вычислить поле (Calculate Field) (Управление данными (Data Management))

Уровень лицензии:BasicStandardAdvanced

Резюме

Вычисляет значения в заданном поле объектов наборов данных, слоев данных или каталогов растровых изображений.

Обзор примеров использования инструмента Вычислить поле (Calculate Field)

Использование

Синтаксис

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
ПараметрОбъяснениеТип данных
in_table

Таблица, содержащая поле, которое будет обновлено новыми вычислениями.

Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View
field

Поле, в которое будут записаны вычисленные значения.

Field
expression

Простое выражение, используемое для вычисления значений, которые будут записаны в выбранные строки таблицы.

SQL Expression
expression_type
(дополнительно)

Задайте тип выражения, которое будет использоваться.

  • VBВыражение будет записано в стандартный формат VB. Это значение используется по умолчанию.
  • PYTHONВыражение будет записано в стандартный формат Python. Использование методов геопроцессора и свойств такое же, как создание геопроцессора версии 9.2.
  • PYTHON_9.3Выражение будет записано в стандартный формат Python. Использование методов геопроцессора и свойств такое же, как создание геопроцессора версии 9.3.
String
code_block
(дополнительно)

Позволяет блокировать код, чтобы ввести его в сложное выражение.

String

Пример кода

Пример CalculateField (окно Python)

Пример скрипта Python для выполнения функции Вычислить поле (Calculate Field) с запуском из окна Python в ArcGIS.

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                '!VEG_TYPE!.split(" ")[-1]', "PYTHON_9.3")
Пример CalculateField: Вычисление центроидов

Используйте CalculateField для присвоения новым полям значений центроидов.

# 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
 
    # 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!",
                                    "PYTHON_9.3")
    arcpy.CalculateField_management(inFeatures, fieldName2, 
                                    "!SHAPE.CENTROID.Y!",
                                    "PYTHON_9.3")
except Exception as e:
    # If an error occurred, print line number and error message
    import traceback
    import sys
    tb = sys.exc_info()[2]
    print("Line {0}".format(tb.tb_lineno))
    print(e.message)
Пример CalculateField: Вычисление диапазонов

Используйте CalculateField с блоком кода для вычисления значений на основании рангов.

# 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_9.3", 
                                codeblock)
Пример CalculateField: Вычисление произвольных значений

Используйте CalculateField для присвоения новому полю случайных значений.

# 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_9.3")

Параметры среды

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Да
ArcGIS for Desktop Standard: Да
ArcGIS for Desktop Advanced: Да
9/10/2013