Skip To Content

计算字段

“计算字段”工具用于计算新字段或现有字段的字段值。 您可以使用 Arcade 函数来定义计算表达式。

示例

“计算字段”工具可用于以下场景:

  • 使用默认值替换空值。
  • 使用 Arcade Proper 函数将所有大写名称的字符串列转换为首字母大写,例如,JANE SMITH 到 Jane Smith。
  • 使用 Arcade 数学函数将数字列的值四舍五入到指定位数。
  • 通过将整型字段转换为新的字符串字段(例如,1 到 00001)来维护邮政编码值的零填充。
  • 使用逗号分隔未分隔的邮政编码字符串,例如,0051500234 到 00515,00234。

参数

下表介绍了在“计算字段”工具中使用的参数:

参数描述

输入数据集

将计算字段的数据集。

要计算的字段

指定计算值是将替换现有字段(现有字段),还是创建字段(新建字段)。

新字段名

新字段的名称。 如果要计算的字段值为新字段,则此参数为必需项。

新字段类型

新字段的类型。 如果要计算的字段值为新字段,则此参数为必需项。

现有字段名称

要替换为计算值的现有字段的名称。 如果要计算值的字段现有字段,则使用此参数。

Arcade 表达式

将用于计算新值的 Arcade 表达式。

空间参考

将用于处理几何值或函数的空间参考。

用法说明

使用要计算的字段参数指定值是计算新字段还是现有字段。

如果您正在计算新字段的值,请提供新字段名称并使用新字段名称新字段类型参数为该字段指定新类型。 以下是字段类型选项:

  • 仅日期 - 计算新的仅日期类型字段。 仅日期字段支持日期值,例如 1/30/2024。
  • 日期 - 计算新的日期类型字段。 日期字段支持日期和时间值,例如 1/30/2024, 10:30 AM。
  • 双精度 - 计算新的双精度型字段。 双精度型字段支持介于 -2.2E308 和 1.8E308 之间的小数。
  • 整型 - 计算新的整型字段。 整型字段支持介于 -2147483648 和 2147483647 之间的整数。
  • 字符串 - 计算新的字符串型字段。 字符串字段支持字符串(文本)。
  • - 计算包含点的新几何字段。
  • 多点 - 计算包含多点的新几何字段。
  • 折线 - 计算包含折线的新几何字段。
  • - 计算包含面的新几何字段。

要计算现有字段的值,请从输入数据集中选择该字段。 该字段将以相同的名称和类型返回,并将包含新计算的值。

对于新字段和现有字段,提供一个 Arcade 表达式来计算新值。 在 Arcade 表达式对话框中,从配置文件变量列表访问输入数据集的字段,或提供一个值,例如 $record.field_name,其中 field_name 为字段名称。 如果该字段具有特殊字符,则可能需要使用替代格式来引用该字段。 例如,名为 %Employed 的字段不能被引用为 $record.%Employed,这是无效语法。 必须改用 $record["%Employed"] 等语法。 使用函数列表可访问用于构建表达式的函数。

使用空间参考参数可指定将用于处理任何几何值或函数的坐标系。 如果在表达式中使用几何字段,则会将几何投影到此空间参考以进行处理。 如果您正在计算新的或现有的几何字段,则输出值将存储在此空间参考中。 默认情况下,空间参考值将设置为输入数据集中几何字段的空间参考。 如果输入数据集中没有任何几何字段,则空间参考参数将设置为 WGS 1984 (WKID 4326)。 如果您不处理几何,则将不会使用此参数。

要了解有关 Arcade 的详细信息,请参阅 ArcGIS Arcade 主题。 要开始使用 Arcade,可尝试使用 Arcade Playground 构建练习表达式。

下表概述了在“计算字段”工具中使用的常用 Arcade 表达式:

常见操作描述示例其他信息

复制字段

将源字段值复制到目标字段。

将值从 my_origin_field 复制到新字段。

return $record.my_origin_field

设置默认值

为字段设置默认值。

使用字符串 my default value 替换 my_field_name 中的空值。

if ($record.my_field_name == null) {
    return "my default value"
} else {
    return $record.my_field_name
}

更改大小写

更改源字符串的大小写。

my_field_name 中的值转换为大写形式或小写形式。

// To convert a string to lowercase:
return Lower($record.my_field_name)

// To convert a string to uppercase:
return Upper($record.my_field_name)

小写

大写

合并值

将源值连接成一个字符串。

field_1field_2 合并以创建字段。 使用逗号分隔值。

var values_to_combine = [
    $record.field_1, 
    $record.field_2
]
var separator = ", "
return Concatenate(values_to_combine, separator)

串连

左侧

从字符串开始处提取一些字符。

返回 my_string_field 中每个值的前三个字符。

Left($record.my_string_field, 3)

左侧

右侧

提取字符串末尾处的字符数。

返回 my_string_field 中每个值的最后三个字符。

Right($record.my_string_field, 3)

右侧

子字符串

从字符串中间处提取一组字符。

返回 my_string_field 中以字符 2 开头的五个字符。

Mid($record.my_string_field, 2, 5)

分割

将字符串拆分为多个部件并返回其中一个。

根据分隔符 ` 将字符串字段拆分为数组。 返回第一个部件。

var parts = Split($record.my_string_field, ',')
return parts[0] // Return the first part

分割

条件值

根据 if/else 语句返回不同的值。

如果给定记录的 my_field_name 值等于 1,则将返回 true;否则,将返回 false。

if($record.my_field_name == 1) {
    return true
} else {
    return false
}

查找和替换

使用不同值替换一个值的所有实例。

使用 new_value 替换 my_field_name 中的 search_value 实例。

var search_value = "my old string"
var new_value = "my new string"
if($record.my_field_name == search_value){
    return new_value
} else {
    return $record.my_field_name
}

替换

访问嵌套值

返回结构体字段中的嵌套值。

返回名为 my_struct_field 的结构体字段中键 myKey 的值。

var nested_value = $record.my_struct_field.myKey
return nested_value

检查键是否存在

根据指定键是否存在,返回 true 或 false。

如果名为 struct_field 的结构体字段中存在键 myKey,则返回 true,否则返回 false

return HasValue($record.struct_field, 'myKey')

HasValue

获取键中的值,或者如果键值不存在,则设置默认值

将返回指定键的值,或者如果键不存在,则将返回默认值。

如果名为 struct_field 的结构体字段中存在键 myKey,则将返回键值;否则,将返回 MyDefault 的默认值。

return DefaultValue($record.struct_field, 
                                  ['myKey'],
                                  'MyDefault')

DefaultValue

输出

该工具将输出一个数据集,其中包含输入数据集中的所有字段以及新计算的字段值。

局限性

以下是“计算字段”工具的已知局限性:

  • 每次工具运行只能计算一个字段。
  • 无法更改现有的字段类型。 使用更新字段工具将现有字段更新为新类型。

许可要求

需要以下许可和配置:

  • CreatorProfessional 用户类型
  • 发布者、服务商或管理员角色,或等效的自定义角色

有关 Data Pipelines 要求的详细信息,请参阅要求