ArcGIS Enterprise 10.5 及 10.5.1 版本的缓冲区表达式示例

输入值或使用字段并不是通过 GeoAnalytics 工具 指定缓冲区大小的仅有方式。某些情况下,您可能希望通过执行数学计算设置缓冲区大小。您可以执行应用于所有记录的简单计算和高级计算。该计算会应用于每个要素。以下各部分包括使用缓冲区表达式的若干示例。在 ArcGIS GeoAnalytics Server 上运行分析时会执行计算。

ArcGIS Enterprise 10.6 及更高版本中,表达式格式通过 Arcade 表达式进行设置。了解有关 Arcade 表达式以及 GeoAnalytics Server 和 10.6 及更高版本使用的 Arcade 表达式的详细信息

缓冲区表达式用于重新构建轨迹创建缓冲区工具。

简单计算

简单数学示例

缓冲区表达式能够利用数学方式处理数字。

运算符说明示例结果

a + b

a 加 b

fieldname 包含数值 1.5

["fieldname"] + 2.5

4.0

a - b

a 减 b

fieldname 包含数值 3.3

["fieldname"]- 2.2

1.1

a * b

a 乘以 b

fieldname 包含数值 2.0

["fieldname"] * 2.2

4.4

a / b

a 除以 b

fieldname 包含数值 4.0

["fieldname"] / 1.25

3.2

abs( a )

返回 a 的绝对(正)值。

fieldname 包含数值 -1.5

abs(["fieldname"])

1.5

log ( a )

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

fieldname 包含数值 1

log(["fieldname"])

0

sin ( a )

返回 a 的三角正弦值。假设输入为以弧度为单位的角。

fieldname 包含数值 1.5707

sin(["fieldname"])

1

cos( a )

返回 a 的三角余弦值。假设输入为以弧度为单位的角。

fieldname 包含数值 0

cos(["fieldname"])

1

tan( a )

返回 a 的正切值。假设输入为以弧度为单位的角。

fieldname 包含数值 0

tan(["fieldname"])

0

sqrt( a )

返回 a 的平方根。

fieldname 包含数值 9

sqrt(["fieldname"])

3

min( a, b )

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

fieldname 包含数值 1.5 和 -3

min(["fieldname"], -3)

-3

max( a, b )

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

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

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

1.5

["Distance"] * 2

GeoAnalytics 工具 的内置函数

As 距离函数示例

缓冲区表达式能够将数值转换为线性距离。

函数说明示例结果

as_meters( <value> )

应用假设输入值以米为单位的计算。

as_meters( ["fieldname"] )

as_meters(150)

结果按 150 米进行缓冲。

as_kilometers( <value> )

应用假设输入值以千米为单位的计算

as_kilometers( ["fieldname"] )

as_kilometers(150)

结果按 150 千米进行缓冲。

as_feet( <value> )

应用假设输入值以英尺为单位的计算

as_feet( ["fieldname"] )

as_feet(150)

结果按 150 英尺进行缓冲。

as_yards( <value> )

应用假设输入值以码为单位的计算

as_yards( ["fieldname"] )

as_yards(150)

结果按 150 码进行缓冲。

as_nautical_miles( <value> )

应用假设输入值以海里为单位的计算

as_nautical_miles( ["fieldname"] )

as_nautical_miles(150)

结果按 150 海里进行缓冲。

as_miles( <value> )

应用假设输入值以英里为单位的计算

as_miles( ["fieldname"] )

as_miles(150)

结果按 150 英里进行缓冲。

为每个要素乘以字段 Distance(假设以千米为单位),然后加上 10 米。

as_kilometers(["Distance"]) + as_meters(10)

GeoAnalytics 工具 缓冲区表达式的高等内置函数

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

函数说明示例结果

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

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

constrain( ["distance"], 0, 10)

constrain(['Store dist'], 6, distance)

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

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

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

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

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

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

iff(["field1"] > ["field2"], ["field1"], 0)

iff(["field1"] > ["field2"], iff(["field2"] = 0, ["field3"], ["field4"]), 0)

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

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

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

依次评估一系列表达式,直至一个表达式评估为 true

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

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

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

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

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

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

decode(["field1"] + 3 , ["field1"], 1, ["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> OR <condition2>

满足条件一或条件二。

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

True

<condition1> AND <condition2>

满足条件一和条件二。

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

False

相关主题