计算字段表达式
计算字段工具使用 Arcade 表达式确定字段值。 您可以执行应用于所有记录的简单计算和高级计算。 该计算会应用于每个要素。 以下各部分包括使用已计算表达式的若干示例。 当在 ArcGIS GeoAnalytics Server 上运行分析时,将执行计算并始终创建新图层。
在 ArcGIS Enterprise 10.6 及更高版本中,可以使用 Arcade 设置表达式格式。 在 Arcade 中,字段名称的格式为 $feature["field name"] 或 $feature.fieldname。 如果字段名称包含一个空格,则需要第一个选项 $feature["field name"]。 以下所有示例都使用此选项。
以下工具在 GeoAnalytics Server 中使用 Arcade 表达式:
旧版本:
即将在 ArcGIS Enterprise 中弃用 ArcGIS GeoAnalytics Server 扩展模块。 GeoAnalytics Server 的最终版本已随 ArcGIS Enterprise 11.3 一同发布。 可通过 ArcGIS Enterprise 11.3 及更低版本访问这些工具。
数学运算和函数示例
表达式能够利用数学方式处理数字。 下表显示了可用运算示例。
|
运算符 |
说明 |
示例 |
|---|---|---|
|
|
返回 a 加 b 的和。 |
4.0 |
|
|
返回 a 减 b 的差。 |
1.1 |
|
|
返回 a 乘以 b 的积。 |
4.4 |
|
|
返回 a 除以 b 的商。 |
3.2 |
|
|
返回 a 的绝对(正)值。 |
1.5 |
|
|
返回 a 的自然对数(以 E 为底)。 |
0 |
|
|
返回 a 的三角正弦值。 假设输入为以弧度为单位的角。 |
1 |
|
|
返回 a 的三角余弦值。 假设输入为以弧度为单位的角。 |
1 |
|
|
返回 a 的正切值。 假设输入为以弧度为单位的角。 |
0 |
|
|
返回 a 的平方根。 |
3 |
|
|
返回 a 和 b 间的最小数值。 |
-3 |
|
|
返回 a 和 b 间的最大数值。 |
1.5 |
|
|
如果结果在限制范围内,则返回输入值。 如果该值小于低值,则返回低值。 如果该值大于高值,则返回高值。 |
示例 1: 如果 示例 2: 如果 |
文本函数示例
计算字段表达式可以处理文本。 下表显示了可用运算示例。
|
运算符 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
|
将值连接在一起,然后返回字符串。
|
|
GeoAnalytics is great! |
|
|
查找字符串中的字符串。 不支持通配符。
|
|
2 |
|
|
使字符串均为小写字母。
|
|
geoanalytics |
使用 find 和 lower 的文本示例。
find(("north"), lower("146NorthStreet"))
日期函数示例
计算字段表达式可以处理日期。 下表显示了可用运算示例。 在 Arcade 中,月份值范围从 0(1 月)到 11(12 月)、日期值从 1 号到 31 号、小时值从 0(上午 12:00)到 23(下午 11:00)、分和秒值从 0 到 59,毫秒值从 0 到 999。 Arcade 日期将返回 GeoAnalytics Server 位置的时间值。
|
运算符 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
|
将值或值集解析成日期字符串。
|
示例 1: 示例 2: 示例 3: |
示例 1:20 Oct 2016 11:23:03 am 示例 2:14 Jan 2017 12:00:00 am 示例 3:返回当前时间 |
|
|
将两个日期相减,并以指定的单位返回差值。
|
示例 1: 示例 2: |
产生的结果会随运行此命令的时间而变化。 示例 1:-20532129137 示例 2:-0.6546783768647119 |
|
|
返回给定日期中的年份。
|
示例 1:
示例 2: |
示例 1:2017 示例 2:2012 |
逻辑函数示例
除了简单的数学表达式之外,还可以使用下表中所示的更高级的函数来应用缓冲区表达式。
|
函数 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
|
如果条件评估为
|
|
如果 如果 |
|
|
按顺序评估一系列表达式,直至一个表达式评估为
|
|
如果 |
|
|
将对表达式进行评估,并将其值与后续参数进行比较。 如果表达式匹配,则返回下一个参数值。 如果均不匹配,则可以选择将最后一个参数作为默认返回值。
|
|
比较条件 val |
条件运算符
条件语句可使用以下运算符:
|
运算符 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
|
a 大于 b a 小于 b |
|
False |
|
|
a 大于或等于 b a 小于或等于 b |
|
True |
|
|
a 不等于 b |
|
True |
|
|
a 等于 b |
|
True |
|
|
满足条件 1 或条件 2。 |
|
True |
|
|
满足条件 1 和条件 2。 |
|
False |
轨迹感知型示例
可以在某些 GeoAnalytics Tools(例如检测事件和计算字段)的 Arcade 中使用轨迹感知型方程。 在计算字段中,如果输入图层已启用时间、表达式为轨迹感知型并使用一个或多个字段来标识轨迹,则可以使用轨迹方程。
在 ArcGIS Enterprise 10.6 中使用以下轨迹表达式:
|
函数 |
说明 |
示例 |
结果 |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
在指定字段中返回指定时间索引的值数组。
|
示例 1: 示例 2: 示例 3: 示例 4: |
在索引 k 处评估示例 1 时,将返回索引 3 到 k 处的值数组。 如果在索引 6 ( 示例 2 会返回按照索引 k 减去给定值减 1 ( 示例 3 返回位于索引 示例 4 返回在示例 2 中创建的数组的首个项目(索引 0): |
||||||||||||
|
|
返回起自 index1 ( |
示例 1: 示例 2: |
示例 1: 示例 2: |
||||||||||||
|
|
计算轨迹的起始时间,以从新纪元开始的微秒为单位。 |
使用 2017 年 1 月 2 日起始的轨迹。
|
|
||||||||||||
|
|
计算轨迹从起始到当前时间步长的持续时间,以微秒为单位。 |
使用 2017 年 1 月 2 日起始、当前时间为 2017 年 1 月 4 日的轨迹。
|
|
||||||||||||
|
|
计算轨迹的当前时间。 |
使用发生于 2017 年 1 月 3 日 9:00 a.m 的要素。
|
|
||||||||||||
|
|
返回正在计算的要素的时间索引。 |
根据轨迹中的第一个要素计算此值。
|
|
||||||||||||
|
|
返回要素时间以及使用数字
|
使用 2017 年 1 月 2 日 2 p.m 的要素。 示例 1: 示例 2: |
示例 1:返回 1 月 2 日下午 3 点: 示例 2:返回 12 月 31 日下午 2 点: |
||||||||||||
|
|
在指定字段中返回指定时间索引的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。
ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。 |
示例 1: 示例 2: 示例 3: |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:在索引 2(值为 30)处进行评估时,将返回 示例 3:在索引 2(值为 30)处进行评估时,将返回 |
||||||||||||
|
|
返回表示指定时间索引的几何的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。
ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。 |
示例 1: 示例 2:折线数据集上的 示例 3:面数据集上的 示例 4:查找上一个点 |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:将通过以下格式返回折线: 示例 3:将通过以下格式返回面: 示例 4:在索引 2(值为 30)处求值: |
||||||||||||
|
|
返回表示指定时间索引的几何和所有属性的值数组。 window 函数可用于使时间前进和后退。
ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。 |
除了 示例 1: 示例 2: |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:在索引 2(值为 30)处求值: |
在 ArcGIS Enterprise 10.6.1 或更高版本中使用以下轨迹表达式:
|
函数 |
说明 |
示例 |
结果 |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
计算轨迹的起始时间,以从新纪元开始的微秒为单位。 |
使用 2017 年 1 月 2 日起始的轨迹。
|
|
||||||||||||
|
|
计算轨迹从起始到当前时间步长的持续时间,以微秒为单位。 |
使用 2017 年 1 月 2 日起始、当前时间为 2017 年 1 月 4 日的轨迹。
|
|
||||||||||||
|
|
计算轨迹的当前时间。 |
使用发生于 2017 年 1 月 3 日 9:00 a.m 的要素。
|
|
||||||||||||
|
|
返回正在计算的要素的时间索引。 |
根据轨迹中的第一个要素计算此值。
|
|
||||||||||||
|
|
在指定字段中返回指定时间索引的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。
|
示例 1: 示例 2: 示例 3: |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:在索引 2(值为 30)处进行评估时,将返回 示例 3:在索引 2(值为 30)处进行评估时,将返回 |
||||||||||||
|
|
返回表示指定时间索引的几何的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。
|
示例 1: 示例 2:折线数据集上的 示例 3:面数据集上的 示例 4:查找上一个点 |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:将通过以下格式返回折线: 示例 3:将通过以下格式返回面: 示例 4:在索引 2(值为 30)处求值: |
||||||||||||
|
|
返回表示指定时间索引的几何和所有属性的值数组。 window 函数可用于使时间前进和后退。
|
除了 示例 1: 示例 2: |
示例 1:在每个要素处进行评估时,该表显示以下结果。
示例 2:在索引 2(值为 30)处求值: |
在 ArcGIS Enterprise 10.9 或更高版本中,可以使用以下追踪表达式可以计算轨迹上的距离、速度和加速度。
所有距离计算均以米为单位,速度计算以米/秒为单位,加速度计算以米/秒的平方为单位。 使用测地线距离测量距离。
|
函数 |
说明 |
|---|---|
|
|
从第一个观测点到当前观测点的观测点之间的距离总和。 |
|
|
从第一个观测点到当前观测点的观测点之间的距离总和加上给定值。 |
|
|
关于当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的距离。 |
|
|
之前的观测点与当前观测点之间的速度。 |
|
|
相对于当前观测点的观测点速度。 例如,在值 2 处,这是当前观测点之后两个观测点处的观测点速度。 |
|
|
围绕当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的速度值。 |
|
|
之前的观测点与当前观测点之间的加速度。 |
|
|
相对于当前观测点的观测点加速度。 |
|
|
围绕当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的加速度值。 |
距离、速度和加速度的示例计算使用以下图像中的示例。

|
函数 |
示例结果 |
||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|