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"] + 2.5 |
4.0 |
|
a - b |
a 减 b |
["fieldname"]- 2.2 |
1.1 |
|
a * b |
A 乘以 B |
["fieldname"] * 2.2 |
4.4 |
|
a / b |
a 除以 b |
["fieldname"] / 1.25 |
3.2 |
|
abs( a ) |
返回 a 的绝对(正)值。 |
abs(["fieldname"]) |
1.5 |
|
log ( a ) |
返回 a 的自然对数(以 E 为底)。 |
log(["fieldname"]) |
0 |
|
sin ( a ) |
返回 a 的三角正弦值。 假设输入为以弧度为单位的角。 |
sin(["fieldname"]) |
1 |
|
cos( a ) |
返回 a 的三角余弦值。 假设输入为以弧度为单位的角。 |
cos(["fieldname"]) |
1 |
|
tan( a ) |
返回 a 的正切值。 假设输入为以弧度为单位的角。 |
tan(["fieldname"]) |
0 |
|
sqrt( a ) |
返回 a 的平方根。 |
sqrt(["fieldname"]) |
3 |
|
min( a, b ) |
返回 a 和 b 间的最小数值。 |
min(["fieldname"], -3) |
-3 |
|
max( a, b ) |
返回 a 或 b 间的最大数值。 |
max(["fieldname1"], ["fieldname2"]) |
1.5 |
乘
["Distance"] * 2
GeoAnalytics 工具的内置函数
As 距离函数示例
缓冲区表达式能够将数值转换为线性距离。
|
函数 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
as_meters( |
应用假设输入值以米为单位的计算 |
as_meters( ["fieldname"] ) as_meters(150) |
结果按 150 米进行缓冲。 |
|
as_kilometers( |
应用假设输入值以千米为单位的计算 |
as_kilometers( ["fieldname"] ) as_kilometers(150) |
结果按 150 千米进行缓冲。 |
|
as_feet( |
应用假设输入值以英尺为单位的计算 |
as_feet( ["fieldname"] ) as_feet(150) |
结果按 150 英尺进行缓冲。 |
|
as_yards( |
应用假设输入值以码为单位的计算 |
as_yards( ["fieldname"] ) as_yards(150) |
结果按 150 码进行缓冲。 |
|
as_nautical_miles( |
应用假设输入值以海里为单位的计算 |
as_nautical_miles( ["fieldname"] ) as_nautical_miles(150) |
结果按 150 海里进行缓冲。 |
|
as_miles( |
应用假设输入值以英里为单位的计算 |
as_miles( ["fieldname"] ) as_miles(150) |
结果按 150 英里进行缓冲。 |
对于每个要素,乘以字段 Distance(假设以千米为单位),然后加上 10 米。
as_kilometers(["Distance"]) + as_meters(10)
GeoAnalytics 工具缓冲区表达式的高级内置函数
除简单的数学表达式外,还可将更多高等函数应用于缓冲区表达式。
|
函数 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
|
如果结果在限制范围内,则返回输入值。 如果该值小于低值,则返回低值。 如果该值大于高值,则返回高值。 |
constrain( ["distance"], 0, 10) constrain(['Store dist'], 6, distance) |
如果 如果 |
|
|
如果条件评估为
|
iff(["field1"] > ["field2"], ["field1"], 0) iff(["field1"] > ["field2"], iff(["field2"] = 0, ["field3"], ["field4"]), 0) |
如果 如果 |
|
|
依次评估一系列表达式,直至一个表达式评估为
|
when((["field1"] + 10) > 1, 1,(["field2"] + 10) > 2 , 2, ["field3"]) |
如果 |
|
|
|
decode(["field1"] + 3 , ["field1"], 1, ["field2"], 2, 0) |
比较条件 val |
条件语句可使用以下运算符:
|
运算符 |
说明 |
示例 |
结果 |
|---|---|---|---|
|
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 |
|
|
满足条件 1 或条件 2。 |
(abs(-5) == 5) OR (10 < 2) |
True |
|
|
满足条件 1 和条件 2。 |
(abs(-5) == 5) AND (10 < 2) |
False |