В наборе инструментов GeoAnalytics Tools находится множество инструментов, позволяющих применить выражение:
- Выражения буфера в инструменте Создать буферы
- Выражения буферов в инструменте Реконструировать треки
- Условия соединения в инструменте Присоединить объекты
Более подробно о выражениях в инструменте Присоединить объекты
- Условия инцидентов в инструменте Выявление инцидентов
- Вычисление значений полей в инструменте Вычислить поле
Инструменты GeoAnalytics Tools, использующие выражения, имеют множество способов применения, но также и ограничения в применении выражений. В версии 10.6 все используемые в GeoAnalytics Server выражения поддерживают Arcade.
Более подробно о функциях 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. | 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>) | Возвращает входное значение, если оно находится в пределах заданных границ. Если входное значение меньше самого нижнего значения, возвращается нижнее значение. Если входное значение больше самого высокого значения, возвращается самое высокое значение. | constrain( $feature["distance"], 0, 10) constrain($feature['Store dist'], 6, distance) | Возвращает 0, если distance меньше 0, 10, если distance больше 10, и distance в других случаях. Возвращает 6, если Store dist меньше 6, distance если Store dist больше чем distance, и Store dist в других случаях. |
Ниже показан пример умножения для вычисления значения поля.
$feature["Distance"] * 2
Примеры текстовых функций
Выражения в инструменте Присоединить данные могут обрабатывать текст. Ниже приводится примеры доступных операций:
Более подробно об текстовых функциях, доступных в Arcade
Оператор | Описание | Пример | Результат |
---|---|---|---|
concatenate( <values>, <separator>) | Соединяет значения вместе и возвращает строку.
| fieldname содержит значение GeoAnalytics. Concatenate ([$features["fieldname"], "is", "великолепен!"], ' ') | 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
В Arcade значения месяцев находятся в диапазоне от 0 (Январь) до 11 (Декабрь), дней от 1 до 31, часов от 0 (00:00) до 23 (11:00 pm), минут и секунд от 0 до 59, а миллисекунд - от 0 до 999. Arcade возвращает даты в соответствии с вашими региональными установками GeoAnalytics Server.
Оператор | Описание | Пример | Результат |
---|---|---|---|
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 |
Условные операторы
Выражения условий могут применять следующие операторы.
Оператор | Объяснение | Пример | Результаты |
---|---|---|---|
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 |
Примеры логических операторов
Помимо операторов условий, более продвинутые логические операторы могут использоваться для вычислений значений полей.
Более подробно о логических функциях, доступных в Arcade
Функция | Описание | Пример | Результат |
---|---|---|---|
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 оценивает выражение, а затем сравнивает его значение с последующими параметрами. Если выражение совпадает, возвращается следующее значение параметра. Если нет, существует опция, чтобы последний параметр стал возвращаемым значением по умолчанию.
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0) | Сравнивает тождество между значением условия conditional val field1 + 3 и case1 field1. Если true, то будет возвращено 1. Если false, сравнивает тождество между field1 + 3 и field2. Если true, возвращается 2; иначе возвращается 0. |