Ввод значений или использование поля – это не единственные способы указать размер буфера, используемого в Инструменты GeoAnalytics. В некоторых случаях вам может потребоваться выполнить математические вычисления, чтобы задать размер буфера. Можно выполнять как простые, так и сложные вычисления над всеми записями. Эти вычисления применяются к каждому объекту. В разделах ниже приводятся примеры использования выражений буфера. Вычисления выполняются при запуске анализа на ArcGIS GeoAnalytics Server.
В ArcGIS Enterprise 10.6 и более поздней выражения используют формат выражений Arcade. Более подробно о выражениях Arcade и о Выражениях Arcade Expressions в GeoAnalytics Server и 10.6 и более поздней.
Выражения буфера используются инструментами Заново создать треки и Создать буферы.
Простые вычисления
Простые математические примеры
Выражения буфера возможны для математически обрабатываемых чисел.
Оператор | Объяснение | Пример | Результат |
---|---|---|---|
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. | 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_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) | Возвращает 0, если distance меньше 0, 10, если distance больше 10, и distance в других случаях. Возвращает 6, если Store dist меньше 6, distance, если Store dist больше 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, если field1 больше field2, и 0 в других случаях. Возвращает результат второй функции iff, если field1 больше field2, и 0 в других случаях. |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | Оценивает несколько выражений поочередно до тех пор, пока одно из них не даст значения true.
| 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 оценивает выражение, а затем сравнивает его значение с последующими параметрами. Если выражение совпадает, возвращается следующее значение параметра. Если нет, существует опция, чтобы последний параметр стал возвращаемым значением по умолчанию.
| decode(["field1"] + 3 , ["field1"], 1, ["field2"], 2, 0) | Сравнивает тождество между значением условия field1 + 3 и case1 field1. Если true, то будет возвращено 1. Если false, сравнивает тождество между field1 + 3 и field2. Если true, возвращается 2; иначе возвращается 0. |
Выражения условий могут использовать следующие операторы:
Оператор | Объяснение | Пример | Результаты |
---|---|---|---|
a > b a < b | a больше b a меньше b | 10 > 2 | Ложь |
a >= b a <= b | a больше или равно b a меньше или равно b | abs(-10) >= 10 | Истина |
a != b | a не равно b | abs(-3) != -3 | Истина |
a == b | a равно b | abs(-5) == 5 | Истина |
<condition1> OR <condition2> | Встречено условие один или условие два. | (abs(-5) == 5) OR (10 < 2) | Истина |
<condition1> AND <condition2> | Встречено условие один и условие два. | (abs(-5) == 5) AND (10 < 2) | Ложь |