Skip to main content

计算字段 (数据管理工具)

汇总

计算要素类、要素图层或栅格的字段值。

用法

注意:

此工具会修改输入数据。 有关详细信息以及避免意外更改数据的策略,请参阅 修改或更新输入数据的工具

  • 要了解有关 Python 表达式的详细信息,请参阅 计算字段 Python 示例

    要了解有关 Arcade 表达式的详细信息,请参阅开发人员帮助中的 ArcGIS Arcade

    有关 SQL 表达式的详细信息,请参阅 SQL 表达式语法计算字段值

    要了解有关 VBScript 表达式的详细信息,请参阅 计算字段 VBScript 示例

  • 该工具的 Arcade 表达式使用 字段计算 Arcade 配置文件。 Arcade 配置文件是评估和理解 Arcade 表达式的上下文。 当对 Arcade 表达式进行求值时,返回值将转换为输出值的字段类型。

  • 使用所选要素集(如使用 创建要素图层按属性选择图层 工具从查询创建的要素集)时,此工具将只更新所选的记录。

    注意:

    在 Windows 11 版本 24H2 中,VBScript 将成为一项按需特性,并且需要 VBScript 功能。

    要继续使用 VBScript 选项,请执行以下操作之一:

    • 将表达式类型转换为 Python、Arcade 或 SQL。

    • 在 Windows 系统设置中启用 VBScript 可选功能。

    有关详细信息,请参阅 移除和弃用通知

  • 每次操作仅能对一个字段应用计算。 要应用多个计算,请使用 计算字段 工具。

  • 现有字段值将被覆盖。 要保留原始值,请创建输入表的副本作为备份,或者使用地理处理窗格中的 启用撤消 选项。

  • 对于 Python 计算,必须在字段名称两边添加惊叹号(例如 !fieldname!)。

    对于 Arcade 计算,字段名称必须以 $feature. 为前缀(例如,$feature.fieldname)。

    注:

    要在字段类型之间传递时间值(日期、仅日期、仅时间、时间戳偏移和文本),改用 转换时间字段 工具。

  • 计算文本或字符字段的字符串时,在对话框中,字符串必须使用双引号(例如 "string"),而在脚本中,还必须对使用双引号的字符串两边添加单引号(例如,'"string"')。

  • 要将字段计算为数值,请在表达式参数中提供数值,且值的两旁不加引号。

    旧版本:

    自 ArcGIS Pro 2.0 起,不再支持 arcgis.rand()。 应改用 Python random 模块中的可比函数。 要成功使用 random 模块,可以在代码块参数中将其作为导入添加。

  • 您可以使用代码块参数来创建复杂表达式。 在对话框中直接提供代码块,或在脚本中将代码块作为字符串输入。 表达式与代码块会相互连接。 代码块必须返回与表达式的关联;代码块的结果必须传入到表达式中。

    只有 Python 表达式支持代码块参数。

  • 您可以在代码块参数中使用 Python math 模块及格式。 您还可以导入附加模块。 math 模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常数。 要了解更多有关 math 模块的内容,请参阅 Python 帮助。

  • 要在 Python 中计算几何信息,请使用 Geometry 对象属性。 例如,使用 !shape!.pointCount! 表达式计算要素中的折点数。

    注:

    计算几何属性 工具支持相似的计算。

    要在 Python 中计算面积和长度,请使用包含方法和单位类型的 getAreagetLength 方法。

    • 要以平方千米为单位计算面的测地线面积,请使用以下表达式:

      !shape!.getArea('GEODESIC', 'SQUAREKILOMETERS')!

    • 要以码为单位计算折线(或面)的平面长度,请使用以下表达式:

      !shape!.getLength('PLANAR', 'YARDS')

    有关详细信息,请参阅 ArcPy PolygonPolyline 对象。

    了解有关地理处理工具以及线性和面积单位的详细信息

  • ArcGIS 应用程序使用 UTF-16-LE 编码读写 .cal 文件。 只要文件使用 UTF-16-LE 编码编写,其他应用程序(如 Notepad)可用于创建或修改 .cal 文件。 使用任何其他编码的文件无法加载到代码块中。

  • 如果 Python 和 SQL 表达式尝试串连含有空值或者除数为零值的字符串字段,则会为该字段值返回空值。

    注:

    使用 SQL 表达式串连移动地理数据库中的字符串字段将组合值,同时忽略空值。

  • 使用连接数据时,您仅可以更新源表中的字段。 您无法更新连接表中的字段。 要在连接表上执行计算,请直接在该表上执行计算。

  • SQL 表达式可用于加快要素服务和企业级地理数据库的计算速度。 使用该表达式可以将单次请求设置为服务器或数据库,而不必一次执行一个要素或一行的计算,从而提高计算速度。

    要素服务、企业级地理数据库、移动地理数据库、文件地理数据库、数据库、SQLite 和 GeoPackage 支持 SQL 表达式。 对于其他格式,请使用 Python 或 Arcade 表达式。

    SQL 选项用于表达式类型参数具有以下限制:

    • 此选项仅支持文件地理数据库、移动地理数据库、Db2、Oracle、PostgreSQL、SAP HANA 和 SQL Server(包含或不包含企业级地理数据库)、SQLite 和 GeoPackage。

    • 不支持在连接表上计算字段值。

    • 不支持版本化和已存档的企业级地理数据库数据。

    • 不支持 撤消地理处理操作

    有关 SQL 表达式的帮助,请参阅数据库供应商文档。

  • 工具对话框中的表达式参数具有一个插入值下拉列表,可以从字段列表中的选定字段或选定字段的属性域中添加字段值或属性域值。 使用属性域值可确保仅向字段插入属性域的有效值。

参数

标注 说明 数据类型

输入表

包含将使用新计算更新的字段的表。

Mosaic Layer; Raster Layer; Table View

字段名称(现有或新建)

将使用新计算更新的字段。

如果输入表中不存在具有指定名称的字段,则会添加该字段。

Field

表达式

将用于创建将填充所选行的值的简单计算表达式。

SQL Expression

表达式类型

(可选)

指定要使用的表达式类型。

如果输入是要素服务,则默认表达式类型为 SQL。 对于任何其他类型的输入,默认表达式类型均为 Python

要了解有关 Python 表达式的详细信息,请参阅 计算字段 Python 示例

要了解有关 Arcade 表达式的详细信息,请参阅开发人员帮助中的 ArcGIS Arcade

有关 SQL 表达式的详细信息,请参阅 SQL 表达式语法计算字段值

SQL 表达式可用于加快要素服务和企业级地理数据库的计算速度。 使用该表达式可以将单次请求设置为服务器或数据库,而不必一次执行一个要素或一行的计算,从而提高计算速度。

只有要素服务、企业级地理数据库、移动地理数据库、文件地理数据库、数据库、SQLite 和 GeoPackage 支持 SQL 表达式。 对于其他格式,请使用 Python 或 Arcade 表达式。

要了解有关 VBScript 表达式的详细信息,请参阅 计算字段 VBScript 示例

  • Python将使用 Python 表达式类型。

  • Arcade将使用 ArcGIS Arcade 表达式类型。

  • SQL将使用 SQL 表达式类型。

  • VBScript(已弃用)将使用 VBScript 表达式类型。

String

代码块

(可选)

将用于复杂 Python 或 VBScript 表达式的代码块。

String

字段类型

(可选)

指定新字段的字段类型。 仅当输入表中不存在字段名称时才使用此参数。

如果字段的类型为文本,则该字段的长度为 512,除非输入为 shapefile 或 dBASE 文件,在这种情况下,长度将为 254。 要调整长度,请使用 更改字段 工具。

  • 短整型(16 位整型)此字段类型将为短整型。 短整型字段支持介于 -32,768 和 32,767 之间的整数。

  • 长整型(32 位整型)此字段类型将为长整型。 长整型字段支持介于 -2,147,483,648 和 2,147,483,647 之间的整数。

  • 大整型(64 位整数)此字段类型将为大整型。 大整型字段支持 -(253) 和 253 之间的整数。

  • 浮点型(32 位浮点型)此字段类型将为浮点型。 浮点型字段支持介于 -3.4E38 和 1.2E38 之间的小数。

  • 双精度型(64 位浮点型)此字段类型将为双精度型。 双精度型字段支持介于 -2.2E308 和 1.8E308 之间的小数。

  • 文本此字段类型将为文本类型。 文本字段支持字符串。

  • 日期此字段类型将为日期类型。 日期字段支持日期和时间值。

  • 日期(高精度)此字段类型将为高精度日期。 高精度日期字段支持包含毫秒时间的日期和时间值。

  • 仅日期此字段类型仅限日期。 仅日期字段支持不带时间值的日期值。

  • 仅时间此字段类型仅限时间。 仅时间字段支持不带日期值的时间值。

  • 时间戳偏移此字段类型将为时间戳偏移。 时间戳偏移字段支持日期、时间和相对于 UTC 值的偏移。

  • BLOB(二进制数据)此字段类型将为 BLOB。 BLOB 字段支持存储为长度较长的一系列二进制数的数据。 您需要一个自定义的加载器、查看器或第三方应用程序将这些项加载到 BLOB 字段中或者查看 BLOB 字段的内容。

  • GUID(全局唯一标识符)此字段类型将为 GUID。 GUID 字段可存储注册表样式的字符串,该字符串包含用大括号括起来的 36 个字符。

  • 栅格此字段类型将为栅格。 栅格字段格可在地理数据库中存储栅格数据或者将该数据与地理数据库一同存储。 可以存储 ArcGIS 软件支持的所有栅格数据集格式,但建议您仅使用小影像。

String

强制域

(可选)

指定是否将强制执行字段属性域规则。

  • 选中将强制执行字段属性域规则。

  • 未选中将不会强制执行字段属性域规则。 这是默认设置。

Boolean

派生输出

标注 说明 数据类型

更新的输入表

已更新的表。

Table View; Raster Layer; Mosaic Layer

环境

当前工作空间, 范围, 传递字段属性域描述

特殊情况

传递字段属性域描述

When this environment is turned on, any fields that have an associated domain will use the domain description instead of the field's value. Values from fields that do not have a domain will be unaffected.

许可信息

  • 基本: 是
  • 标准: 是
  • 高级: 是