ArcGIS Desktop

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

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

ArcGIS Online

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

ArcGIS Desktop

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

ArcGIS Enterprise

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

ArcGIS for Developers

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

ArcGIS Solutions

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

ArcGIS Marketplace

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

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

Справка

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Больше...

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

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

Инструмент Вычислить поле (Calculate Field) находится в наборе инструментов Управление данными (Data Management) в группе инструментов Поля (Fields). Это тот же самый инструмент, который запускается при вызове команды Калькулятор поля (Field Calculator) из контекстного меню поля атрибутивной таблицы. Выполняя вычисления поля, важно понимать, какие данные вы используете и каким образом собираетесь использовать их в будущем. Синтаксис, который необходимо использовать при составлении вычислительного выражения, может быть различным в зависимости от источника данных и используемого языка синтаксического анализатора.

Ниже представлены полезные подсказки и оптимальные методы использования инструмента Вычислить поле (Calculate Field).

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

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

Выражения могут быть составлены в формате VBScript или Python. Стиль форматирования должен соответствовать принятому для соответствующего формата.

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

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

!shape.area@acres!
  • Ключевые слова площадных единиц измерения:
    • 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

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

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

При использовании синтаксиса VBScript названия полей должны обязательно даваться в квадратных скобках [ ].

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

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

This tool can also be used to update character items. Expressions using a character string should be wrapped, using single quotes—for example, [CHARITEM] = 'NEW STRING'. However, if the character string has embedded single quotes, wrap the string using double quotes—for example, [CHARITEM] = "TYPE'A'".

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

Функция arcgis.rand() поддерживается инструментом Вычислить поле. Для того чтобы использовать эту функцию, для составления выражения должен быть выбран синтаксис языка Python. Функцию arcgis.rand(), созданную для инструментов ArcGIS, не следует путать с функцией Rand(), также существующей в языке Python.

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

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

Saved VB .cal files from previous versions of ArcGIS may work or require minimal modifications. If you have VBA code from past releases that use ArcObjects, you will need to modify your calculations to work.

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

При использовании инструмента Вычислить поле в ArcGIS Engine Runtime или ArcGIS for Server синтаксис выражений должен быть написан на Python. Только выражения, написанные на Python, могут быть использованы в случае включения инструмента в модель, публикуемую с помощью ArcGIS for Server.

Примеры кода, используемого инструментом Вычислить поле

Пример 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")

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

  • Основы вычислений в полях
  • Выполнение простых вычислений
  • Вычисление площади, длины и прочих свойств геометрии
  • Изменение регистра текстовых значений
  • Примеры вычислений полей

ArcGIS Desktop

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

ArcGIS Platform

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

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2018 Esri. | Конфиденциальность | Правовая информация