ArcGIS for Desktop

  • Документация
  • Стоимость
  • Поддержка

  • My Profile
  • Справка
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS for Desktop

Полноценная профессиональная ГИС

ArcGIS for Server

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Стоимость
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

Справка

  • Главная
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительно...

Вычислить поле

  • Краткая информация
  • Использование
  • Синтаксис
  • Пример кода
  • Параметры среды
  • Информация о лицензировании

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

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

Просмотр примеров использования инструмента Вычислить поле

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

  • Выражения 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!).

  • При использовании с выбранным набором пространственных объектов, например созданных из запроса в инструментах Создать векторный слой (Make Feature Layer) или Выбрать в слое по атрибуту (Select Layer By Attribute), этот инструмент обновляет только выбранные записи.

  • Вычисление можно применить только к одному полю за один раз.

  • Обратите внимание, что инструмент получает настройку среды Выходной экстент (Output Extent). Значения поля вычисляются только для объектов, расположенных внутри экстента. Настройка среды не влияет на непространственные данные, например, на таблицы.

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

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

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

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

  • Этот инструмент может также использоваться для обновления символьных элементов. Текст в выражениях следует заключать в одинарные кавычки, например, [CHARITEM] = 'NEW STRING'. Но если строка символов содержит символы одинарных кавычек, выражение должно быть заключено в двойные кавычки – например, [CHARITEM] = "TYPE'A'".

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

  • Функция arcgis.rand() поддерживается этим инструментом, если задано выражение Python. Функция arcgis.rand() была создана для инструментов ArcGIS, ее не следует путать с модулем Python random. Синтаксис для доступных функций распределений arcgis.rand() можно найти в разделе Синтаксис распределения для произвольных значений.

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

  • Параметр Код блокировки (Code Block) позволяет создавать сложные выражения. Вы можете ввести блок кода непосредственно в диалоговое окно или как непрерывную строку в скрипте.

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

  • Сохраненные файлы VB .cal из предыдущих версий ArcGIS можно использовать сразу, либо после внесения минимальных изменений. Если у вас есть код VBA из предыдущих версий, использовавший ArcObjects, вам будет надо изменить вычисления, чтобы они заработали.

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

  • Вычисления полей с использованием Выражения (Expression) VB не поддерживаются 64-битными продуктами, в том числе ArcGIS for Desktop – Background Geoprocessing (64-разрядная) и ArcGIS for Server. Для успешной работы с инструментом Вычислить поле (Calculate Field) в этих продуктах выражения необходимо преобразовать в формат Python, а в случае использования Background Geoprocessing (64-разрядная), фоновая обработка может также быть отключена.

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

  • Примеры вычислений полей

Синтаксис

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

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

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

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

Field
expression

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

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

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

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

Вычисления полей с помощью VB Выражения (Expression) не поддерживаются 64-битными приложениями, в том числе ArcGIS Pro, ArcGIS for Desktop – Background Geoprocessing (64-разрядная) и ArcGIS for Server. Для успешной работы с инструментом Вычислить поле (Calculate Field) в этих продуктах выражения необходимо преобразовать в формат Python, а в случае использования Background Geoprocessing (64-разрядная), фоновая обработка может также быть отключена.

String
code_block
(дополнительно)

Разрешает ввод блока кода в сложные выражения.

String

Пример кода

CalculateField, пример (окно 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]', "PYTHON_9.3")
Пример CalculateField: Вычисление центроидов

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

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

# Import system modules
import arcpy

try: 
    # 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!",
                                    "PYTHON_9.3")
    arcpy.CalculateField_management(inFeatures, fieldName2, 
                                    "!SHAPE.CENTROID.Y!",
                                    "PYTHON_9.3")
except Exception:
    e = sys.exc_info()[1]
    print(e.args[0])
Пример CalculateField: Вычисление диапазонов

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

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

# 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, "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
 
# Set environment settings
arcpy.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")

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

  • Текущая рабочая область (Current Workspace)
  • Экстент (Extent)

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

  • Обзор группы инструментов Поля
Отзыв по этому разделу?

ArcGIS for Desktop

  • На главную
  • Документация
  • Стоимость
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог сотрудников
  • Конференция пользователей
  • Саммит разработчиков
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | Конфиденциальность | Правовая информация