计算字段 (数据管理工具)
汇总
计算要素类、要素图层或栅格的字段值。
用法
注意:
此工具会修改输入数据。 有关详细信息以及避免意外更改数据的策略,请参阅 修改或更新输入数据的工具。
要了解有关 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()。 应改用 Pythonrandom模块中的可比函数。 要成功使用random模块,可以在代码块参数中将其作为导入添加。您可以使用代码块参数来创建复杂表达式。 在对话框中直接提供代码块,或在脚本中将代码块作为字符串输入。 表达式与代码块会相互连接。 代码块必须返回与表达式的关联;代码块的结果必须传入到表达式中。
只有 Python 表达式支持代码块参数。
您可以在代码块参数中使用 Python
math模块及格式。 您还可以导入附加模块。math模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常数。 要了解更多有关math模块的内容,请参阅 Python 帮助。要在 Python 中计算几何信息,请使用
Geometry对象属性。 例如,使用!shape!.pointCount!表达式计算要素中的折点数。注:
计算几何属性 工具支持相似的计算。
要在 Python 中计算面积和长度,请使用包含方法和单位类型的
getArea和getLength方法。要以平方千米为单位计算面的测地线面积,请使用以下表达式:
!shape!.getArea('GEODESIC', 'SQUAREKILOMETERS')!要以码为单位计算折线(或面)的平面长度,请使用以下表达式:
!shape!.getLength('PLANAR', 'YARDS')
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 示例。
|
String |
|
代码块 (可选) |
将用于复杂 Python 或 VBScript 表达式的代码块。 |
String |
|
字段类型 (可选) |
指定新字段的字段类型。 仅当输入表中不存在字段名称时才使用此参数。 如果字段的类型为文本,则该字段的长度为 512,除非输入为 shapefile 或 dBASE 文件,在这种情况下,长度将为 254。 要调整长度,请使用 更改字段 工具。
|
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.
许可信息
- 基本: 是
- 标准: 是
- 高级: 是