检测事件表达式

检测事件工具使用 Arcade 表达式确定事件的开始和结束条件。检测事件条件必须始终生成 truefalse 结果。使用条件来检查要素是否应该包含在事件中。将测试每个要素的条件,以确定哪些要素为事件。以下各部分包括使用表达式的若干示例。当分析在 ArcGIS GeoAnalytics Server 上运行时,会执行计算且总是创建新的图层。

ArcGIS Enterprise 10.6 及更高版本中,表达式使用 Arcade 进行格式化。在使用 Arcade 的情况下,字段名称的格式为 $feature["field name"]$feature.fieldname。如果字段名称包含一个空格,则需要第一个选项 $feature["field name"]。以下所有示例都使用此选项。

了解有关 Arcade 表达式的详细信息

GeoAnalytics Server 中的以下工具使用 Arcade 表达式:

数学运算和函数示例

表达式能够利用数学方式处理数字。下表显示了可用运算示例。

了解有关 Arcade 中可用数学运算和函数的详细信息

运算符说明示例

a + b

返回 a 加 b 的和。

fieldname 包含数值 1.5

$feature["fieldname"] + 2.5

4.0

a - b

返回 a 减 b 的差。

fieldname 包含数值 3.3

$feature["fieldname"]- 2.2

1.1

a * b

返回 a 乘以 b 的积。

fieldname 包含数值 2.0

$feature["fieldname"] * 2.2

4.4

a / b

返回 a 除以 b 的商。

fieldname 包含数值 4.0

$feature["fieldname"] / 1.25

3.2

abs( a )

返回 a 的绝对(正)值。

fieldname 包含数值 -1.5

abs($feature["fieldname"])

1.5

log( a )

返回 a 的自然对数(以 E 为底)。

fieldname 包含数值 1

log($feature["fieldname"])

0

sin( a )

返回 a 的三角正弦值。

假设输入为以弧度为单位的角。

fieldname 包含数值 1.5707

sin($feature["fieldname"])

1

cos( a )

返回 a 的三角余弦值。

假设输入为以弧度为单位的角。

fieldname 包含数值 0

cos($feature["fieldname"])

1

tan( a )

返回 a 的正切值。

假设输入为以弧度为单位的角。

fieldname 包含数值 0

tan($feature["fieldname"])

0

sqrt( a )

返回 a 的平方根。

fieldname 包含数值 9

sqrt($feature["fieldname"])

3

min( a, b )

返回 a 和 b 间的最小数值。

fieldname 包含数值 1.5 和数值 -3

min($feature["fieldname"], -3)

-3

max( a, b )

返回 a 和 b 间的最大数值。

fieldname1 包含数值 1.5,fieldname2 包含数值 -3

max($feature["fieldname1"], $feature["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

如果结果在限制范围内,则返回输入值。 如果该值小于低值,则返回低值。 如果该值大于高值,则返回高值。

示例 1:constrain( $feature["distance"], 0, 10)

如果 distance 小于 0,则返回 0,如果 distance 大于 10,则返回 10,其余情况下返回 distance

示例 2:constrain($feature['Store dist'], 6, distance)

如果 Store dist 小于 6,则返回 6,如果 Store dist 大于 distance,则返回 distance,其余情况下返回 Store dist

文本函数示例

检测事件表达式能够处理文本。下表显示了可用运算示例。

了解有关 Arcade 中可用文本函数的详细信息

运算符说明示例结果

concatenate(<values>, <separator>)

将值连接在一起,然后返回字符串。

  • values - 要串连的字符串值数组。
  • separator(可选)- 如果 values 参数为数组,则为用于连接的分隔符;如果为第一个参数提供单个值,则为要连接的字符串。 如果未提供,则为空。

fieldname 包含数值 GeoAnalytics

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

GeoAnalytics is great!

find(<searchText>, <text>, <startPos>)

查找字符串中的字符串。 不支持通配符。

  • searchText - 要搜索的子字符串。
  • text - 要搜索的文本。
  • startPos(可选)- 要在其中进行搜索的字符串中基于零的位置索引。

fieldname1 包含数值 14NorthStreetfieldname2 包含数值 North

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

使字符串均为小写字母。

  • value - 要变为小写字母的字符串。

fieldname 包含数值 GEOANALYTICS

lower($feature["fieldname"])

geoanalytics

使用 findlower 的文本示例。

find(("north"), lower("146NorthStreet"))

日期函数示例

检测事件表达式能够处理日期。下表显示了可用运算示例。在 Arcade 中,月份值范围从 0(1 月)到 11(12 月)、日期从 1 号到 31 号、小时从 0(上午 12:00)到 23(下午 11:00)、分和秒从 0 到 59,毫秒从 0 到 999。Arcade 日期返回您的 GeoAnalytics Server 所在位置处的时间值。

了解有关 Arcade 中可用日期函数的详细信息

运算符说明示例结果

date(<value>, <month>, <day>, <hour>, <minute>)

将值或值集解析成日期字符串。

  • value(可选)- 自 1970 年 1 月 1 日 (UTC) 以来的毫秒数。还可以是代表年的数字。 如果指定了某一年,则也必须在后续参数中提供月和日。 此值可以是日期字符串或是要转换成日期的 ISO 8601 字符串。
  • month(可选)- 月份 (0-11),其中 0 是一月,11 是十二月。
  • day(可选)- 一月中的某天 (1-31)。
  • hour(可选)- 一天中的某小时 (0-23)。
  • minute(可选)- 一小时中的某分钟 (0-59)。
  • second(可选)- 一分钟中的某秒 (0-59)。
  • millisecond(可选)- 一秒中的某毫秒 (0-999)。

fieldname 包含数值 1476987783555

示例 1:Date($features["fieldname"])

示例 2:Date(2017,0,14,0)

示例 3:Date()

示例 1:20 Oct 2016 11:23:03 am

示例 2:14 Jan 2017 12:00:00 am

示例 3:返回当前时间

DateDiff(<date1>, <date2>, <units>)

将两个日期相减,并以指定的单位返回差值。

  • date1 - 从中减去第二个日期的日期值。
  • date2 - 要从第一个给定日期中减去的日期值。
  • units(可选)- 用于返回两个给定日期差值的单位。 受支持的单位类型包括 millisecondssecondsminuteshoursdaysmonthsyears。 默认值为 milliseconds

示例 1:DateDiff(Date(2017,1,14,0), Date())

示例 2:DateDiff(Date(2017,1,14,0), Date(), "Years")

产生的结果会随运行此命令的时间而变化。

示例 1:-20532129137

示例 2:-0.6546783768647119

Year(<dateValue>)

返回给定日期中的年份。

  • value - 标识年份的日期值。

示例 1:fieldname 是一个值为 09 Oct 2017 04:30:43 pm 的日期类型的字段

Year($feature["fieldname"])

示例 2:fieldname 是一个值为 2012-09-27 的 ISO 8601 字符串格式的字符串字段。

示例 1:2017

示例 2:2012

逻辑函数示例

除简单的数学表达式外,还可将更多高等函数应用于缓冲区表达式。

函数说明示例结果

iif(<condition>,<true value>,<false value>)

如果条件评估为 true,则返回一个值,如果条件评估为 false,则返回另外一个值。

<true value><false value> 可为以下内容:

  • 数值字段。 如果字段名称中含有空格,请使用方括号。
  • 数值。
  • 函数。

iif($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

如果 field1 大于 field2,则返回 field1,其余情况下返回 0

如果 field1 大于 field2,则返回第二个 iif 函数的结果,其余情况下返回 0

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

按顺序评估一系列表达式,直至一个表达式评估为 true

  • expression - 表达式。
  • result - 表达式的结果。 可以为数值或字段。
  • default - 表达式均不匹配时的可选值。

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

如果 field1 + 10 大于 1,则返回 1。 否则,检查 field2 + 10 是否大于 2。 如果是,则返回 2。 否则,返回 field3

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

将对表达式进行评估,并将其值与后续参数进行比较。 如果表达式匹配,则返回下一个参数值。 如果均不匹配,则可以选择将最后一个参数作为默认返回值。

  • conditional val - 条件值。 可以为字段或表达式。
  • case - 要与 conditional val 进行对比的值。
  • result - 相应实例与 conditional val 匹配时的结果。
  • defaultValue - 其他值均不是 true 时的可选值。

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

比较条件 val field1 + 3 和 case1 field1 是否相等。 如果 true,则返回 1。 如果 false,则比较 field1 + 3field2 是否相等。 如果 true,则返回 2;否则,返回 0。

条件运算符

条件语句可使用以下运算符:

运算符说明示例结果

a > b

a < b

a 大于 b

a 小于 b

10 > 2

False

a >= b

a <= b

a 大于或等于 b

a 小于或等于 b

abs(-10) >= 10

True

a != b

a 不等于 b

abs(-3) != -3

True

a == b

a 等于 b

abs(-5) == 5

True

<condition1> || <condition2>

满足条件 1 或条件 2。

(abs(-5) == 5) || (10 < 2)

True

<condition1> && <condition2>

满足条件 1 和条件 2。

(abs(-5) == 5) && (10 < 2)

False

跟踪感知型示例

此外,一些 GeoAnalytics Tools(例如检测事件计算字段)也可以使用 Arcade 形式的跟踪感知型方程。在输入图层已启用时间、已选中表达式为跟踪感知型且已确定一个或多个字段来标识轨迹的情况下,可在计算字段中使用轨迹方程。

ArcGIS Enterprise 10.6 中使用以下追踪表达式

函数说明示例结果

$track.field["fieldname"].history(<value1>)

在指定字段中返回指定时间索引的值数组。

  • 一个正数返回一个从给定索引开始直到当前要素的数组。
  • 负数返回当前时间步长和之前的 <value1> - 1 时间步长值。

MyField 具有按顺序排列的值 [10, 20, 30, 40, 50, 60, 70, 80]。 值 10 位于索引 0 处,值 80 位于索引 7 处。 将在每个索引处对表达式进行评估,示例概述了用于示例的索引。 n 表示序列中的要素数,k 表示要评估的索引。

示例 1:$track.field["MyField"].history(3))

示例 2:$track.field["MyField"].history(-3)

示例 3:mean($track.field["MyField"].history(-2))

示例 4:$track.field["MyField"].history(-3)[0]

在索引 k 处评估示例 1 时,将返回索引 3 到 k 处的值数组。 如果在索引 6 (70) 处进行评估,将返回索引 [3,4,5,6] 处的值数组,以使数组为 [40, 50, 60, 70]

示例 2 会返回按照索引 k 减去给定值减 1 (k-2) 计算的值数组。 如果在索引 6 (value = 70) 处评估此值,k-2k-1k 的值将返回为 [50, 60, 70]

示例 3 返回位于索引 k-1 处和 k 处的值的平均值。 如果在索引 4 (value = 50) 处评估此值,您将发现 value 40(索引 3)和 value 50(索引 4)的平均值等于 45。 如果您在索引 7 处评估此值,结果将为 70 和 80 的平均值 75

示例 4 返回在示例 2 中创建的数组的首个项目(索引 0):50

$track.field["fieldname"].history(<value1>, <value2>)

返回起自 index1 (<value1>) 终至 index2 (<value2>) 的值数组。

MyField 已对 [10, 20, 30, 40, 50, 60, 70, 80] 的值按顺序排列。10 位于索引 0 处,80 位于索引 7 处。 本例的表达式求值结果位于索引 7 (80) 处。

示例 1:$track.field["MyField"].history(-3, -2))

示例 2:$track.field["MyField"].history(-5, -2))

示例 1:[60]

示例 2:[40, 50, 60]

$track.time.start

计算轨迹的起始时间,以从新纪元开始的微秒为单位。

使用 2017 年 1 月 2 日起始的轨迹。

$track.time.start

1483315200000

$track.time.duration

计算轨迹从起始到当前时间步长的持续时间,以微秒为单位。

使用 2017 年 1 月 2 日起始、当前时间为 2017 年 1 月 4 日的轨迹。

$track.time.duration

172800000

$track.time.current

计算轨迹的当前时间。

使用发生于 2017 年 1 月 3 日 9:00 a.m 的要素。

$track.time.current

1483434000000

$track.index

返回正在计算的要素的时间索引。

根据轨迹中的第一个要素计算此值。

$track.index

0

$track.T(<value>, "<units>")

返回要素时间以及使用数字 <value> 和给定 <units> 创建的时间。

  • value - 要添加到要素时间的数值。
  • units - 数值 <value> 的单位。 受支持的单位类型为毫秒、秒、分钟、小时、天、月和年。 默认值为毫秒。

使用 2017 年 1 月 2 日 2 p.m 的要素。

示例 1:$track.T(1, "hours")

示例 2:$track.T(-2, "days")

示例 1:返回 1 月 2 日下午 3 点:1483369200000

示例 2:返回 12 月 31 日下午 2 点:1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

在指定字段中返回指定时间索引的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。

MyField 具有按顺序排列的值 [10, 20, 30, 40, 50]。 将在轨迹中的每个要素处评估该表达式。 返回的结果包括起点要素,但不包括终点要素。

示例 1:$track.field["MyField"].window(-1,2)

示例 2:$track.field["MyField"].window(-2,0)[0]

示例 3:$track.field["MyField"].window(0,3)[2]

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

示例 2:在索引 2(值为 30)处进行评估时,将返回 10

示例 3:在索引 2(值为 30)处进行评估时,将返回 50

$track.geometry.window(<value1>, <value2>)

返回表示指定时间索引的几何的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。

MyField 具有按顺序排列的值 [10, 20, 30, 40, 50]。 要素的几何为 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]。将在轨迹中的每个要素处对表达式进行评估。 返回的结果包括起点要素,但不包括终点要素。

示例 1:$track.geometry.window(-1,2)

示例 2:折线数据集上的 $track.geometry.window(0,1)[0]

示例 3:面数据集上的 $track.geometry.window(0,1)[0]

示例 4:查找上一个点 $track.geometry.window(-1,0)[0]["x"] 的 X 值

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

示例 2:将通过以下格式返回折线: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

示例 3:将通过以下格式返回面:[{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

示例 4:在索引 2(值为 30)处评估:2

$track.window(<value1>, <value2>)

返回表示指定时间索引的几何和所有属性的值数组。 window 函数可用于使时间前进和后退。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

ArcGIS Enterprise 10.6.1 及更高版本中包含 window 函数。

MyField 除了 objectIDglobalIDinstant_datetime 字段之外,还具有按顺序排列的值 [10, 20, 30, 40, 50]。 要素的几何为 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]。 将在轨迹中的每个要素处评估该表达式。 返回的结果包括起点要素,但不包括终点要素。

示例 1:$track.window(-1,0)[0]

示例 2:geometry($track.window(-1,0)[0]["x"]

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

示例 2:在索引 2(值为 30)处评估:2

ArcGIS Enterprise 10.6.1 或更高版本中使用以下追踪表达式。

函数说明示例结果

TrackStartTime()

计算轨迹的起始时间,以从新纪元开始的微秒为单位。

使用 2017 年 1 月 2 日起始的轨迹。

TrackStartTime()

1483315200000

TrackDuration()

计算轨迹从起始到当前时间步长的持续时间,以微秒为单位。

使用 2017 年 1 月 2 日起始、当前时间为 2017 年 1 月 4 日的轨迹。

TrackDuration()

172800000

TrackCurrentTime()

计算轨迹的当前时间。

使用发生于 2017 年 1 月 3 日 9:00 a.m 的要素。

TrackCurrentTime()

1483434000000

TrackIndex

返回正在计算的要素的时间索引。

根据轨迹中的第一个要素计算此值。

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

在指定字段中返回指定时间索引的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

MyField 具有按顺序排列的值 [10, 20, 30, 40, 50]。 将在轨迹中的每个要素处评估该表达式。 返回的结果包括起点要素,但不包括终点要素。

示例 1:TrackFieldWindow("MyField,-1,2)

示例 2:TrackFieldWindow("MyField,-2,0)[0]

示例 3:TrackFieldWindow("MyField,0,3)[2]

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

示例 2:在索引 2(值为 30)处进行评估时,将返回 10

示例 3:在索引 2(值为 30)处进行评估时,将返回 50

TrackGeometryWindow(<startIndex>, <endIndex>)

返回表示指定时间索引的几何的值数组。 window 函数可用于使时间前进和后退。 将在轨迹中的每个要素处评估该表达式。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

MyField 具有按顺序排列的值 [10, 20, 30, 40, 50]。 要素的几何为 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]。将在轨迹中的每个要素处对表达式进行评估。 返回的结果包括起点要素,但不包括终点要素。

示例 1:TrackGeometryWindow(-1,2)

示例 2:折线数据集上的 TrackGeometryWindow(0,1)[0]

示例 3:面数据集上的 TrackGeometryWindow(0,1)[0]

示例 4:查找上一个点 TrackGeometryWindow(-1,0)[0]["x"] 的 X 值

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

示例 2:将通过以下格式返回折线: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

示例 3:将通过以下格式返回面:[{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

示例 4:在索引 2(值为 30)处评估:2

TrackWindow(<value1>, <value2>)

返回表示指定时间索引的几何和所有属性的值数组。 window 函数可用于使时间前进和后退。

  • 当前要素位于索引 0 处。
  • 正值表示当前值之后、在未来发生的要素。 例如,位置 1 是数组中的下一个值。
  • 负数表示上一要素之前、在过去发生的要素。 例如,-1 是数组中的上一个值。

MyField 除了 objectIDglobalIDinstant_datetime 字段之外,还具有按顺序排列的值 [10, 20, 30, 40, 50]。 要素的几何为 [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]。 将在轨迹中的每个要素处评估该表达式。 返回的结果包括起点要素,但不包括终点要素。

示例 1:TrackWindow(-1,0)[0]

示例 2:geometry(TrackWindow(-1,0)[0]["x"]

示例 1:在每个要素处进行评估时,该表显示以下结果。

评估要素结果

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

示例 2:在索引 2(值为 30)处评估:2

ArcGIS Enterprise 10.9 或更高版本中,使用以下追踪表达式可以计算轨迹上的距离、速度和加速度。

所有距离计算均以米为单位,速度计算以米/秒为单位,加速度计算以米/秒的平方为单位。 使用测地线距离测量距离。

函数说明

TrackCurrentDistance()

从第一个观测点到当前观测点的观测点之间的距离总和。

TrackDistanceAt(value)

从第一个观测点到当前观测点的观测点之间的距离总和加上给定值。

TrackDistanceWindow(value1, value2)

关于当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的距离。

TrackCurrentSpeed()

之前的观测点与当前观测点之间的速度。

TrackSpeedAt(value1)

相对于当前观测点的观测点速度。 例如,在值 2 处,这是当前观测点之后两个观测点处的观测点速度。

TrackSpeedWindow(value1, value2)

围绕当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的速度值。

TrackCurrentAcceleration()

之前的观测点与当前观测点之间的加速度。

TrackAccelerationAt(value1)

相对于当前观测点的观测点加速度。

TrackAccelerationWindow(value1, value2)

围绕当前观测点 (0) 的窗口中的第一个值(包括)到最后一个值(不包括)之间的加速度值。

距离、速度和加速度的示例计算使用以下图像中的示例。

追踪具有六个点的示例图像

函数示例结果

TrackCurrentDistance()

点 ID结果(米)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

点 ID结果(米)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

null

P6

null

TrackDistanceWindow(-1, 2)

点 ID结果(米)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

点 ID结果(米/秒)

P1

0

P2

60/60

1

P3

80/60

1.33

P4

30/60

.5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

点 ID结果(米/秒)

P1

80/60

1.33

P2

30/60

.5

P3

35/60

0.5833

P4

25/60

0.4167

P5

null

P6

null

TrackSpeedWindow(-1, 2)

点 ID结果(米/秒)

P1

[0, 1]

P2

[0, 1, 1.3]

P3

[1, 1.3, 0.5]

P4

[1.3, 0.5, 0.583]

P5

[0.5, 0.583, -0.4167]

P6

[0.583, -0.4167]

TrackCurrentAcceleration()

点 ID结果(米/秒²)

P1

0

P2

0.0167

P3

0.0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

点 ID结果(米/秒²)

P1

0.0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

null

P6

null

TrackAccelerationWindow(-1, 2)

点 ID结果(米/秒²)

P1

[0, 0.0167]

P2

[0, 0.0167, 0.0056 ]

P3

[0.0167, 0.0056 , -0.0014]

P4

[ 0.0056 , -0.0014, 0.0014]

P5

[-0.0014, 0.0014, -0.0028]

P6

[0.0014, -0.0028]

相关主题