Сводка
Вычисляет значения в заданных полях класса объектов, векторного слоя или растра.
Использование
Более подробно о выражениях Python см. в Примеры вычисления поля на Python.
Более подробно о выражениях Arcade см. в Руководстве ArcGIS Arcade.
Более подробно о выражениях SQL см. в разделе Вычислить значения полей.
При использовании с выбранным набором пространственных объектов, например созданных из запроса в инструментах Создать векторный слой или Выбрать в слое по атрибуту, этот инструмент обновляет только выбранные записи.
Существующие значения поля будут перезаписаны. Сделайте копию входной таблицы, если вы хотите сохранить исходные значения.
Для вычислений Python имена полей должны быть заключены в восклицательные знаки (!fieldname!).
Для вычислений на Arcade, имена полей должны начинаться с $feature. ($feature.fieldname).
Для вычисления значений строк в текстовых или символьных полях в диалоговом окне значение строки должно быть указано в двойных кавычках ("string"), либо при написании скрипта строка в двойных кавычках должна быть заключена еще и в одинарные ('"string"').
Для вычисления значения в числовом поле введите соответствующее числовое значение в качестве параметра Выражение; кавычек при этом не требуется.
Параметр Блок кода позволяет создавать сложные выражения. Вы можете ввести блок кода непосредственно в диалоговое окно или как непрерывную строку в скрипте. Выражение и блок кода являются соединенными. Блок кода должен иметь обратное отношение к выражению; результат выполнения блока кода должен передаваться в выражение.
Параметр Блок кода поддерживается только для выражений Python.
Модуль Python math и форматирование доступны для использования с параметром Блок кода. Вы можете импортировать дополнительные модули. Модуль math предлагает теоретико-числовые функции и функции представления, степенные и логарифмические функции, тригонометрические функции, функции углового преобразования, гиперболические функции и математические константы. Дополнительные сведения о модуле math находятся в справке Python.
Выражения Python могут создаваться с использованием свойств объекта Geometry, включая type, extent, centroid, firstPoint, lastPoint, area, length, isMultipart и partCount (например, !shape.area!).
Выражения Python могут использовать свойства геометрии area и length с единицами измерения площади или расстояния для конвертации значений в другие единицы измерения (например, !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!).
При вычислении присоединенных данных нельзя напрямую вычислять содержимое присоединенных столбцов. Однако вы можете напрямую вычислять значения столбцов исходной таблицы. Чтобы вычислить соединенные данные, вы должны сначала добавить соединенные таблицы или слои на карту. Затем вы можете отдельно вычислить эти данные. Эти изменения появятся и в присоединенных столбцах.
Выражения Python, в которых соединяются строковые поля, имеющие значение null либо содержащие деление на ноль, возвратят null в качестве значения такого поля.
Выражения SQL внедрены для более быстрых вычислений в сервисах объектов. Вместо вычисления одного объекта или строки в один момент времени, в сервис объектов или базу данных отправляется один запрос, что существенно увеличивает скорость вычислений.
Выражения SQL поддерживаются только в сервисах объектов. Для других форматов используйте выражения Python или Arcade.
Синтаксис
CalculateFields(in_table, expression_type, fields, {code_block})
Parameter | Объяснение | Тип данных |
in_table | Входная таблица, содержащая поля, которые будут обновлены при вычислении. | Table View; Raster Layer; Mosaic Layer |
expression_type | Задает тип используемого выражения.
Более подробно о выражениях Python см. в разделе Примеры вычисления поля. Более подробно о выражениях Arcade см. в Руководстве ArcGIS Arcade. Более подробно о выражениях SQL см. в разделе Вычислить значения полей. | String |
fields [[Field Name, Expression],...] | Поля, которые будут вычислены, и выражения для них. | Value Table |
code_block (Дополнительный) | Блок кода для сложных выражений. Функцию нельзя использовать для того, чтобы вернуть несколько значений. | String |
Производные выходные данные
Name | Объяснение | Тип данных |
out_table | Обновленные таблицы. | Представление таблицы; Растровый слой; Слой мозаики |
Пример кода
Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений Python.
import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management("parcels", "PYTHON3",
[["xCentroid", "!SHAPE.CENTROID.X!"],
["yCentroid", "!SHAPE.CENTROID.Y!"]])
Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений SQL.
import arcpy
arcpy.CalculateFields_management("<a feature service url>", "SQL",
[["ceiling_field", "CEILING(field1)"],
["floor_field", "FLOOR(field1)"]])
Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений Arcade.
import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management(
"parcels", "ARCADE",
[["max_value", "Max($feature.field1, $feature.field2)"],
["min_value", "Min($feature.field1, $feature.field2)"]])
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да