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

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

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

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

    Внимание:

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

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

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

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

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

  • Выражения Arcade этого инструмента используют профиль Вычислить поле Arcade. Профиль Arcade является контекстом, в котором распознается и оценивается выражение Arcade. При оценке выражения Arcade возвращаемое значение приводится к типу поля выходного значения.

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

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

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

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

  • Примечание:

    Для переноса временных значений между разными типами полей (дата, только дата, только время, сдвиг метки времени и текст) используйте инструмент Конвертировать поле времени.

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

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

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

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

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

  • Чтобы вычислить информацию о геометрии в Python, воспользуйтесь свойствами объекта Geometry. Например, используйте выражение !shape.pointCount! для вычисления числа вершин объекта.

    Примечание:

    Инструмент Вычислить атрибуты геометрии поддерживает аналогичные вычисления.

    Чтобы вычислить площадь и длину в Python, используйте методы getArea и getLength с указанием метода и типа единицы измерения.

    • Для расчета геодезической площади полигонов в квадратных километрах воспользуйтесь следующим выражением:
      !shape.getArea('GEODESIC', 'SQUAREKILOMETERS')!
    • Чтобы вычислить длину полилиний или полигонов на плоскости в ярдах, используйте следующее выражение:
      !shape.getLength('PLANAR', 'YARDS')

    Для получения подробной информации см. объекты ArcPy Polygon и Polyline.

    Подробнее об инструментах геообработки и линейных и площадных единицах измерения

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

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

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

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

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

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

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

Параметры

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

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

Table View; Raster Layer; Mosaic Layer
Тип выражения

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

Если входные данные - сервис объектов, тип выражения по умолчанию - SQL. Для остальных типов входных данных тип выражения по умолчанию - Python.

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

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

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

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

  • PythonБудет использоваться тип выражения Python.
  • ArcadeБудет использоваться тип выражения Arcade.
  • SQLБудет использоваться тип выражения SQL.
  • VBScriptБудет использоваться тип выражения VBScript.
String
Поля

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

Дополнительное выражение SQL будет использоваться для выбора подмножества записей. Будут вычислены только те записи, которые соответствуют условию where. Если условие where оставить пустым, будут вычислены все записи. Более подробно о синтаксисе SQL см. Справочник по SQL для выражений запросов, применяемых в ArcGIS.

Если во входной таблице нет поля с этим именем, оно будет добавлено. Тип поля будет задан с помощью значения типа поля. Если тип поля не указан, поле будет добавлено как текстовое.

Доступны следующие типы полей:

  • Short (16-разрядное целочисленное) — тип поля будет короткое целое. Поля типа Короткое целое поддерживают целые числа в диапазоне от -32768 до 32767.
  • Long (32-разрядное целочисленное) — тип поля будет длинное целое. Поля типа Длинное целое поддерживают целые числа в диапазоне от -2147483648 до 2147483647.
  • Big integer (64-разрядное целое) — типом поля будет большое целое. Поля типа big integer поддерживают целые числа в диапазоне от -(253) до 253.
  • Float (32-разрядное с плавающей точкой) — тип поля будет с плавающей точкой. Поля с плавающей точкой поддерживают дробные числа в диапазоне от -3.4E38 до 1.2E38.
  • Double (64-разрядное с плавающей точкой) — тип поля будет двойной точности. Поля двойной точности поддерживают дробные числа в диапазоне от -2.2E308 до 1.8E308.
  • Text — тип поля будет текстовым. Текстовые поля поддерживают строки символов.
  • Date — тип поля будет дата. Поля типа Date поддерживают значения даты и времени.
  • Date (high precision) — Тип поля будет дата с высокой точностью. Поля даты с высокой точностью поддерживают дату и время с точностью до миллисекунды.
  • Только дата – типом поля будет только дата. Поля только для даты поддерживают значения даты без значений времени.
  • Только время – типом поля будет только время. Поля только для времени поддерживают значения времени без значения даты.
  • Метка времени – типом поля будет сдвиг метки времени. Поля сдвига метки времени поддерживают дату, время и сдвиг от значения UTC.
  • BLOB (Большой двоичный объект) — тип поля будет BLOB. Большой двоичный объект (BLOB) поддерживает данные, хранимые в виде длинной последовательности двоичных чисел. Необходимо использовать пользовательский загрузчик или вьюер, или приложение сторонних производителей для загрузки элементов в поле типа BLOB или просмотра его содержимого.
  • GUID (глобальный уникальный идентификатор) — Тип поля будет GUID. Поле типа GUID содержат строки в стиле реестра, состоящие из 36 символов, заключенных в фигурные скобки.
  • Raster imagery — тип поля будет растр. Поле типа Raster может хранить растровые данные в базе геоданных или вне ее. Можно хранить все поддерживаемые в ArcGIS форматы наборов растровых данных, но рекомендуется для этого поля использовать только маленькие изображения.
Value Table
Блок кода
(Дополнительный)

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

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

String
Принудительно использовать домены
(Дополнительный)

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

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

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

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

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

Table View; Raster Layer; Mosaic Layer

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

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

Table View; Raster Layer; Mosaic Layer
expression_type

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

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

Если входные данные - сервис объектов, тип выражения по умолчанию - SQL. Для остальных типов входных данных тип выражения по умолчанию - PYTHON3.

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

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

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

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

String
fields
[[Field Name, Expression, {Where Clause}, {Field Type}],...]

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

Дополнительное выражение SQL будет использоваться для выбора подмножества записей. Будут вычислены только те записи, которые соответствуют условию where. Если условие where оставить пустым, будут вычислены все записи. Более подробно о синтаксисе SQL см. Справочник по SQL для выражений запросов, применяемых в ArcGIS.

Если во входной таблице нет поля с этим именем, оно будет добавлено. Тип поля будет задан с помощью значения типа поля. Если тип поля не указан, поле будет добавлено как текстовое.

Доступны следующие типы полей:

  • SHORT — тип поля будет Короткое целое. Поля типа Короткое целое поддерживают целые числа в диапазоне от -32768 до 32767.
  • LONG — тип поля будет длинное целое. Поля типа Длинное целое поддерживают целые числа в диапазоне от -2147483648 до 2147483647.
  • BIGINTEGER – типом поля будет большое целое. Поля типа big integer поддерживают целые числа в диапазоне от -(253) до 253.
  • FLOAT — тип поля будет с плавающей точкой. Поля с плавающей точкой поддерживают дробные числа в диапазоне от -3.4E38 до 1.2E38.
  • DOUBLE — тип поля будет двойной точности. Поля двойной точности поддерживают дробные числа в диапазоне от -2.2E308 до 1.8E308.
  • TEXT — тип поля будет текстовым. Текстовые поля поддерживают строки символов.
  • DATE — тип поля будет дата. Поля типа Date поддерживают значения даты и времени.
  • DATEHIGHPRECISION — Тип поля будет дата с высокой точностью. Поля даты с высокой точностью поддерживают дату и время с точностью до миллисекунды.
  • DATEONLY – типом поля будет только дата. Поля только для даты поддерживают значения даты без значений времени.
  • TIMEONLY – типом поля будет только время. Поля только для времени поддерживают значения времени без значения даты.
  • TIMESTAMPOFFSET – типом поля будет сдвиг метки времени. Поля сдвига метки времени поддерживают дату, время и сдвиг от значения UTC.
  • BLOB — типом поля будет BLOB. Большой двоичный объект (BLOB) поддерживает данные, хранимые в виде длинной последовательности двоичных чисел. Необходимо использовать пользовательский загрузчик или вьюер, или приложение сторонних производителей для загрузки элементов в поле типа BLOB или просмотра его содержимого.
  • GUID — Тип поля будет GUID. Поле типа GUID содержат строки в стиле реестра, состоящие из 36 символов, заключенных в фигурные скобки.
  • RASTER — тип поля будет растр. Поле типа Raster может хранить растровые данные в базе геоданных или вне ее. Можно хранить все поддерживаемые в ArcGIS форматы наборов растровых данных, но рекомендуется для этого поля использовать только маленькие изображения.
Value Table
code_block
(Дополнительный)

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

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

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

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

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

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

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

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

Table View; Raster Layer; Mosaic Layer

Пример кода

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

Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений Python.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
CalculateFields, пример 2 (окно Python)

Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений SQL.

import arcpy
arcpy.management.CalculateFields("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
CalculateFields, пример 3 (окно Python)

Пример скрипта окна Python, иллюстрирующий использование функции CalculateFields в режиме прямого запуска с типом выражений Arcade.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])
CalculateFields, пример 4 (окно Python)

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

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"

# Calculate the Field1 field to -1 if the value is null.
# Calculate the Title field to remove any leading spaces if the first character
# is a space.
arcpy.management.CalculateFields(
    "parcels", "PYTHON3", 
    [['Field1', -1, "Field1 IS NULL"],
     ['Title', '!Address!.lstrip()', "Title LIKE ' %'"]])

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

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

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

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