Выражения используются в инструменте Присоединить данные для вычисления полей входного слоя на базе значений полей присоединенного слоя. Если вы не добавляете поля из присоединенного слоя, используйте выражения для определения способа заполнения каждого объекта. Выражение Присоединить данные должно соответствовать типу поля. В разделах ниже приводятся примеры выражений.
Инструмент Присоединить данные был разработан для версии 10.6.1, и в нем используются выражения Arcade для присоединения значений полей. Применяя Arcade, формат имен поле становится $feature["field name"] или $feature.fieldname. Первая опция, $feature["field name"], требуется, когда имя поля содержит пробел. Все примеры ниже используют эту опцию.
Более подробно о выражениях Arcade
Следующие инструменты используют выражения Arcade в в GeoAnalytics Server:
- Заново создать треки для выражений буфера
- Создать буферы для выражений буфера
- Присоединить объекты для выражения присоединения
- Выявление инцидентов для выявления инцидентов с помощью выражения начала и окончания
- Вычислить поле для вычислений значений поля
Математическая операция и примеры функции
Выражения, обрабатывающие числовые математические выражения. Ниже приводится примеры доступных операций:
Более подробно о математических операциях и функциях в 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. | 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) Возвращает 0, если distance меньше 0, 10, если distance больше 10, и distance в других случаях. Пример 2: constrain($feature['Store dist'], 6, distance) Возвращает 6, если Store dist меньше 6, distance, если Store dist больше distance, и Store dist в других случаях. |
Примеры текстовых функций
Выражения Присоединить данные могут обрабатывать текст. Ниже приводится примеры доступных операций:
Более подробно об текстовых функциях в Arcade
Оператор | Объяснение | Пример | Результат |
---|---|---|---|
concatenate( <values>, <separator>) | Соединяет значения вместе и возвращает строку.
| fieldname содержит значение GeoAnalytics Concatenate ([$features["fieldname"], "is", "great!"], ' ') | GeoAnalytics – великолепен! |
find(<searchText>, <text>, <startPos>) | Находит строку в пределах строки. Групповые символы не поддерживаются.
| fieldname1 содержит значение 14NorthStreet, и fieldname2 содержит значение North find($feature["fieldname2"], $feature["fieldname1"]) | 2 |
lower(<value>) | Делает буквы в строке строчными.
| fieldname содержит значение GEOANALYTICS lower($feature["fieldname"]) | геоаналитика |
Текстовый пример использования find и lower.
find(("north"), lower("146NorthStreet"))
Примеры функций дат
Выражения Присоединить данные могут обрабатывать даты. Ниже приводится примеры доступных операций: В Arcade значения месяцев возможны в диапазоне от 0 (Январь) до 11 (Декабрь), дней от 1 до 31, часов от 0 (12:00 a.m.) до 23 (11:00 pm), минут и секунд от 0 до 59, и миллисекунды от 0 до 999. Arcade возвращает даты в соответствии с вашими региональными установками GeoAnalytics Server.
Более подробно об функциях дат в Arcade
Оператор | Объяснение | Пример | Результат |
---|---|---|---|
date( <value>, <month>, <day>, <hour>, <minute>) | Анализирует значение или набор значений в строке даты.
| fieldname содержит значение 1476987783555 Пример 1: Date($features["fieldname"]) Пример 2: Date(2017,0,14,0) Пример 3: Date() | Пример 1: 20е октября 2016 11:23:03 Пример 2: 14-е января 2017 12:00:00 Пример 3: Возвращает текущую дату. |
DateDiff(<date1>, <date2>, <units>) | Вычитает две даты и возвращает разницу в указанных единицах.
| Пример 1: DateDiff(Date(2017,1,14,0), Date()) Пример 2: DateDiff(Date(2017,1,14,0), Date(), "Years") | Результат будет зависеть от времени запуска команды. Пример 1: -20532129137 Пример 2: -0.6546783768647119 |
Year(<dateValue>) | Возвращает год заданной даты.
| Пример 1: fieldname – поле типа Date, значение которого соответствует 09 Oct 2017 04:30:43 pm Year($feature["fieldname"]) Пример 2: fieldname строковое поле в формате строки ISO 8601 со значением 2012-09-27 | Пример 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, если field1 больше field2, и 0 в других случаях. Возвращает результат второй функции iif, если field1 больше field2, и 0 в других случаях. |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | Оценивает несколько выражений поочередно до тех пор, пока одно из них не даст значения true.
| 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> ) | Оценивает выражение, а затем сравнивает его значение с последующими параметрами. Если выражение совпадает, возвращается следующее значение параметра. Если нет, существует опция, чтобы последний параметр стал возвращаемым значением по умолчанию.
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["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 | 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> | Встречено условие один или условие два | (abs(-5) == 5) || (10 < 2) | True |
<condition1> && <condition2> | Встречено условие один и условие два | (abs(-5) == 5) && (10 < 2) | False |