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

Краткая информация

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

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

  • Более подробно о выражениях Python, см. Примеры Python Вычислить поле.

    Более подробно о выражениях Arcade, см. Руководство ArcGIS Arcade.

    Более подробно о выражениях SQL см. в разделе Вычислить значения полей.

  • При использовании с выбранным набором объектов, например, созданных из запроса в инструментах Создать векторный слой или Выбрать в слое по атрибуту, этот инструмент обновит только выбранные записи.

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

  • Существующие значения поля будут перезаписаны. Сделайте копию входной таблицы, если вы хотите сохранить исходные значения.

  • В вычислениях Python имена полей должны быть заключены в восклицательные знаки (например, !fieldname!).

    В вычислениях Arcade перед именами полей должно стоять $feature. (например, $feature.fieldname).

  • Чтобы вычислить строки в текстовые или символьные поля, в диалоговом окне строка должна использовать двойные кавычки ("строка"), или в скрипте строка, использующая двойные кавычки, также должна быть заключена в одинарные кавычки (например, '"string"').

  • Чтобы вычислить поле как числовое значение, введите числовое значение в параметр Выражение; кавычки при этом не требуются.

  • Прежние версии:

    arcgis.rand() в ArcGIS Pro 2.0 больше не поддерживается. Вместо этого следует использовать похожие функции модуля Python random. Для успешного использования модуля random добавьте его в виде импорта в параметр Блок кода.

  • Параметр Блок кода позволяет создавать сложные выражения. Вы можете ввести блок кода непосредственно в диалоговое окно или как непрерывную строку в скрипте. Выражение и блок кода являются соединенными. Блок кода должен иметь обратное отношение к выражению; результат выполнения блока кода должен передаваться в выражение.

    Параметр Блок кода поддерживается только для выражений Python.

  • Можно использовать модуль Python math и форматирование в параметре Блок кода. Также можно импортировать дополнительные модули. Модуль math предлагает теоретико-числовые функции и функции представления, степенные и логарифмические функции, тригонометрические функции, функции углового преобразования, гиперболические функции и математические константы. Более подробно о модуле math см. Справку Python.

  • Выражения Python можно создать при помощи свойств из объекта Geometry, включая type, extent, centroid, firstPoint, lastPoint, area, length, isMultipart и partCount (например, !shape.area!).

  • Можно использовать свойства геометрии area и length в выражениях Python с площадными или линейными единицами для преобразования значения в другую единицу измерения (например, !shape.length@kilometers!). Если данные хранятся в географической системе координат и поддерживаются линейные единицы (например, мили), вычисления длин будут проведены по геодезическому алгоритму. Использование единиц площади в географических данных приведет к сомнительным результатам, поскольку десятичные градусы не совпадают по всему миру.

    • Единицы площади для ключевых слов измерений:
      • ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
    • Линейные диницы для ключевых слов измерений:
      • CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
  • Выражения Python могут использоваться для вычисления геодезической площади или длины объекта с использованием свойств geodesicArea или geodesicLength в сочетании с площадными или линейными единицами измерения (например, !shape.geodesicArea@hectares! или !shape.geodesicLength@miles!).

  • В приложениях ArcGIS для записи и чтения файлов .cal используется кодировка UTF-16-LE. Другие приложения (например, Блокнот) также можно использовать для создания и редактирования файлов .cal, если выходные данные записываются в кодировке UTF-16-LE. Использование других кодировок приведет к невозможности загрузки файла в блок кода.

  • При вычислении присоединенных данных нельзя напрямую вычислять содержимое присоединенных столбцов. Однако вы можете напрямую вычислять значения столбцов исходной таблицы. Чтобы вычислить соединенные данные, сначала добавmnt соединенные таблицы или слои на карту. Затем вы можете отдельно вычислить эти данные. Эти изменения появятся и в присоединенных столбцах.

  • Выражения Python, которые пытаются конкатенировать строковые поля, содержащие пустые (null) или разделенные на ноль значения, вернут null для этого значения поля.

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

    Выражения SQL поддерживают только сервисы объектов и многопользовательские базы геоданных. Для других форматов используйте выражение Python или Arcade.

    Использование опции SQL для параметра Тип выражения имеет следующие ограничения в многопользовательских базах геоданных:

    • Эта опция поддерживается только для баз данных Db2, Oracle, PostgreSQL, SAP HANA и SQL Server.
    • Вычисление значений полей в соединяемых таблицах не поддерживается.
    • Версионные данные не поддерживаются.
    • Возможность отмены операций геообработки не поддерживается.

    Для получения справки по выражениям SQL см. Документацию поставщика вашей базы данных.

Параметры

ПодписьОписаниеТип данных
Входная таблица

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

Mosaic Layer; Raster Layer; Table View
Имя поля (существующего или нового)

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

Если во входной таблице нет поля с этим именем, оно будет добавлено.

Field
Выражение

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

SQL Expression
Тип выражения
(Дополнительный)

Указывает тип используемого выражения.

Более подробно о выражениях Python, см. Примеры Python Вычислить поле.

Более подробно о выражениях Arcade, см. Руководство ArcGIS Arcade.

Более подробно о выражениях SQL см. в разделе Вычислить значения полей.

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

Выражения SQL поддерживают только сервисы объектов и многопользовательские базы геоданных. Для других форматов используйте выражение Python или Arcade.

  • Python 3Будет использоваться тип выражения Python. Это значение по умолчанию
  • ArcadeБудет использоваться тип выражения Arcade.
  • SQLБудет использоваться тип выражения SQL.
String
Блок кода
(Дополнительный)

Блок кода, который вводится для сложных выражений.

String
Тип поля
(Дополнительный)

Задает тип для нового поля. Этот параметр используется только если имя поля отсутствует во входной таблице.

Если тип поля текстовой, длина нового поля будет 512 символов. Для шейп-файлов и файлов dBASE длина поля будет 254 символа. Длину нового поля можно настроить с помощью инструмента Изменить поле.

  • ТекстМожет использоваться любая строка символов.
  • Float (с плавающей точкой)Могут использоваться дробные числа между -3,4E38 и 1,2E38
  • Double (с плавающей точкой, двойной точности)Могут использоваться дробные числа между -2,2E308 и 1,8E308.
  • Короткое целоеМогут использоваться целые числа между -32768 и 32767.
  • Длинное целоеМогут использоваться целые числа между -2147483648 и 2147483647
  • ДатаБудут использоваться даты и время.
  • BLOB (Большой двоичный объект)Будет использоваться длинный ряд двоичных чисел.
  • Растровое изображениеБудут использоваться растровые изображения. Все форматы наборов растровых данных, поддерживаемые программным обеспечением ArcGIS, могут быть сохранены, но рекомендуется использовать только небольшие изображения.
  • GUID (глобальный уникальный идентификатор)Будет использоваться глобальный уникальный идентификатор.
String
Принудительно использовать домены
(Дополнительный)

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

  • Отмечено – правила домена поля будут применены. Если поле невозможно обновить, значение поля останется без изменений, в сообщения инструмента будет включено предупреждение.
  • Не отмечено – правила домена поля не будут применены. Используется по умолчанию
Boolean

Производные выходные данные

ПодписьОписаниеТип данных
Обновленная входная таблица

Обновленная таблица.

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateField(in_table, field, expression, {expression_type}, {code_block}, {field_type}, {enforce_domains})
ИмяОписаниеТип данных
in_table

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

Mosaic Layer; Raster Layer; Table View
field

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

Если во входной таблице нет поля с этим именем, оно будет добавлено.

Field
expression

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

SQL Expression
expression_type
(Дополнительный)

Указывает тип используемого выражения.

  • PYTHON3Будет использоваться тип выражения Python. Это значение по умолчанию
  • ARCADEБудет использоваться тип выражения Arcade.
  • SQLБудет использоваться тип выражения SQL.

Более подробно о выражениях Python, см. Примеры Python Вычислить поле.

Более подробно о выражениях Arcade, см. Руководство ArcGIS Arcade.

Более подробно о выражениях SQL см. в разделе Вычислить значения полей.

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

Выражения SQL поддерживают только сервисы объектов и многопользовательские базы геоданных. Для других форматов используйте выражение Python или Arcade.

String
code_block
(Дополнительный)

Блок кода, который вводится для сложных выражений.

String
field_type
(Дополнительный)

Задает тип для нового поля. Этот параметр используется только если имя поля отсутствует во входной таблице.

Если тип поля текстовой, длина нового поля будет 512 символов. Для шейп-файлов и файлов dBASE длина поля будет 254 символа. Длину нового поля можно настроить с помощью инструмента Изменить поле.

  • TEXTМожет использоваться любая строка символов.
  • FLOATМогут использоваться дробные числа между -3,4E38 и 1,2E38
  • DOUBLEМогут использоваться дробные числа между -2,2E308 и 1,8E308.
  • SHORTМогут использоваться целые числа между -32768 и 32767.
  • LONGМогут использоваться целые числа между -2147483648 и 2147483647
  • DATEБудут использоваться даты и время.
  • BLOBБудет использоваться длинный ряд двоичных чисел.
  • RASTERБудут использоваться растровые изображения. Все форматы наборов растровых данных, поддерживаемые программным обеспечением ArcGIS, могут быть сохранены, но рекомендуется использовать только небольшие изображения.
  • GUIDБудет использоваться глобальный уникальный идентификатор.
String
enforce_domains
(Дополнительный)

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

  • ENFORCE_DOMAINSПравила домена поля будут применены.
  • NO_ENFORCE_DOMAINSПравила домена поля не будут применены. Это значение по умолчанию
Boolean

Производные выходные данные

ИмяОписаниеТип данных
out_table

Обновленная таблица.

Table View; Raster Layer; Mosaic Layer

Пример кода

CalculateField, пример 1 (окно Python)

В следующем скрипте окна Python показано, как используется функция CalculateField в режиме прямого запуска.

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, пример 2 (автономный скрипт)

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

# 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, пример 3 (автономный скрипт)

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

# 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, пример 4 (автономный скрипт)

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

# 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, пример 5 (окно Python)

Пример скрипта окна Python для использования функции CalculateField в ARCADE в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/fgdb.gdb"
arcpy.CalculateField_management("data", "new_value", "$feature.value1 + $feature.value2", "ARCADE")
CalculateField, пример 6 (окно Python)

Пример скрипта окна Python для использования функции CalculateField в SQL в режиме прямого запуска.

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

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

Особые случаи

Передать описания доменов полей

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

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

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы