В наборе инструментов Инструменты геоаналитики находится множество инструментов, позволяющих вам применить выражение.
- Выражения буферов в Создать буферы
- Выражения буферов в инструменте Реконструировать треки
- Условия соединения в инструменте Присоединить объекты
Более подробно о выражениях в инструменте Присоединить объекты
- Условия инцидентов в инструменте Выявление инцидентов
- Вычисление значений полей в инструменте Вычислить поле
Инструменты Инструменты геоаналитики, использующие выражения, имеют множество способов применения, но также и ограничения в применении выражений. В версии 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 | Ложь |
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> || <condition2> | Встречено условие один или условие два | (abs(-5) == 5) || (10 < 2) | Истина |
<condition1> && <condition2> | Встречено условие один и условие два | (abs(-5) == 5) && (10 < 2) | Ложь |
Примеры логических операторов
Помимо операторов условий, более продвинутые логические операторы могут использоваться для вычислений полей.
Более подробно о логических функциях, доступных в Arcade
Функция | Объяснение | Пример | Результат |
---|---|---|---|
iff(<condition>,<true value>,<false value>) | Возвращает одно значение, если условие оценивается как true, и другое значение, если условие оценивается как false. <true value> и <false value> могут быть следующими:
| iff($feature["field1"] > $feature["field2"], $feature["field1"], 0) iff($feature["field1"] > $feature["field2"], iff($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0) | Возвращает field1, если field1 больше field2, и 0 в других случаях. Возвращает результат второй функции iff, если 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. |
Примеры с включённым трекингом
Кроме того, некоторые инструменты Инструменты геоаналитики, например, Выявление инцидентов и Вычислить поле, могут использовать отслеживаемые уравнения в Arcade. В инструменте Вычислить поле уравнения с трекингом можно использовать, если у входного слоя активизировано время, отмечено В выражении учитывается трекинг и одно или несколько полей идентифицируются для идентификации треков.
Функция | Объяснение | Пример | Результат | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$track.field["fieldname"].history(<value1>) | Возвращает массив значений в заданном поле для указанного временного индекса.
| MyField имеет последовательно упорядоченные значения [10, 20, 30, 40, 50, 60, 70, 80]. Значение 10 – индекс 0, и значение 80 – индекс 7. Выражения оцениваются для каждого индекса, а примеры подчёркивают индекс, использованный для примеров. n представляет количество элементов в последовательности, и k представляет оцениваемый индекс. Пример 1:$track.field["MyField"].history(3)) Пример 2:$track.field["MyField"].history(-3) Пример 3:mean($track.field["MyField"].history(-2)) Пример 4:$track.field["MyField"].history(-3)[0] | Если пример 1 оценивается в индексе k, он вернёт массив значений в индексе с 3 до k. Если вы оцениваете в индексе 6 (70), массив значений в индексе [3, 4, 5, 6] возвращается, чтобы получился массив [40, 50, 60, 70]. Пример 2 возвращает массив значений, вычисленных как индекс k минус заданное значение минус 1 (k-2). Если это оценивается в индексе 6 (value = 70), то значения k-2, k-1 и k возвращаются [50, 60, 70]. Пример 3 возвращает среднее значений по индексу k-1 и k. Если вы это оцениваете в индексе 4 (value = 50), вы найдёте среднее от value 50 (индекс 3) и value 60 (индекс 4), равное 65. Если вы это оцениваете в индексе 7, результатом будет среднее от 70 и 80, равное 75. Пример 4 возвращает первый элемент (индекс 0) множества, созданного в примере 2, то есть 50. | ||||||||||||
$track.field["fieldname"].history < value1 > ,(<value1>) | Возвращает массив значений, начиная с index1 (<value1>) до index2 (<value2>). | MyField имеет расположенные по порядку следования значения [10, 20, 30, 40, 50, 60, 70, 80]. 10 это индекс 0, а 80 это индекс 7. Например, выражения оцениваются по индексу 7 (80). Пример 1:$track.field["MyField"].history(-3, -2)) Пример 2:$track.field["MyField"].history(-5, -2)) | Пример 1: [60] Пример 2: [40, 50, 60] | ||||||||||||
$track.time.start | Вычисляет время начала отслеживания в миллисекундах от момента времени. | Использует отслеживание с началом 2 января 2017 $track.time.start | 1483315200000 | ||||||||||||
$track.time.duration | Вычисляет продолжительность отслеживания в миллисекундах от начала до текущего временного шага. | Используется отслеживание с началом 2 января 2017 и текущим временем 4 января 2017. $track.time.duration | 172800000 | ||||||||||||
$track.time.current | Вычисляет текущее время в отслеживании. | Используется объект, который был 3 января 2017 в 9:00 утра. $track.time.current | 1483434000000 | ||||||||||||
$track.index | Возвращает временной индекс вычисляемого объекта. | Это значение вычисляется на первом объекте в отслеживании. $track.index | 0 | ||||||||||||
$track.T(<value>, "<units>") | Возвращает время объекта плюс время, созданное с помощью числового значения <value> и заданных <units>.
| Используется объект, который был 2 января 2017 в 14:00. Пример 1: $track.T(1, "hours") Пример 2: $track.T(-2, "days") | Пример 1: Возвращает 2 января в 3 часа дня: 1483369200000 Пример 2: Возвращает 31 декабря в 2 часа дня: 1483192800000 | ||||||||||||
$track.field["fieldname"].window(<value1>, <value2>) | Возвращает ряд значений заданного поля для указанного индекса времени. Функция window позволяет перейти вперёд или назад во времени. Выражение оценивается для каждого пространственного объекта трека.
Функция window доступна в ArcGIS Enterprise 10.6.1. | MyField имеет последовательно упорядоченные значения [10, 20, 30, 40, 50]. Выражение оценивается для каждого пространственного объекта трека. Результаты возвращаются, включая стартовый объект и исключая конечный объект. Пример 1:$track.field["MyField"].window(-1,2) Пример 2:$track.field["MyField"].window(-2,0)[0] Пример 3:$track.field["MyField"].window(0,3)[2] | Пример 1: при оценивании в каждом пространственном объекте таблица показывает следующие результаты.
Пример 2: при оценивании в индексе 2 (значение равно 30), возвращается: 10. Пример 3: при оценивании в индексе 2 (значение равно 30), возвращается: 50. | ||||||||||||
$track.geometry.window(<value1>, <value2>) | Возвращает массив значений, представляющий геометрию для указанного индекса времени. Функция window позволяет перейти вперёд или назад во времени. Выражение оценивается для каждого пространственного объекта трека.
Функция window доступна в ArcGIS Enterprise 10.6.1. | MyField имеет последовательно упорядоченные значения [10, 20, 30, 40, 50]. Геометрия пространственных объектов [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] Выражение оценивается для каждого пространственного объекта трека. Результаты возвращаются, включая стартовый объект и исключая конечный объект. Пример 1:$track.geometry.window(-1,2) Пример 2: $track.geometry.window(0,1)[0] на наборе данных полилиний Пример 3: $track.geometry.window(0,1)[0] на полигональном наборе данных Пример 4: находит значение X для предыдущей точки $track.geometry.window(-1,0)[0]["x"] | Пример 1: при оценивании в каждом пространственном объекте таблица показывает следующие результаты.
Пример 2: полилинии возвращаются в следующем формате: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}] Пример 3: полигоны возвращаются в следующем формате: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}] Пример 4: оценено по индексу 2 (значение равно 20): 1 | ||||||||||||
$track.window(<value1>, <value2>) | Возвращает массив значений, представляющий геометрию и все атрибуты для указанного индекса времени. Функция window позволяет перейти вперёд или назад во времени.
Функция window доступна в ArcGIS Enterprise 10.6.1. | MyField имеет последовательно упорядоченные значения [10, 20, 30, 40, 50], в дополнение к полям objectID, globalID и instant_datetime. Геометрия пространственных объектов [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] Выражение оценивается для каждого пространственного объекта трека. Результаты возвращаются, включая стартовый объект и исключая конечный объект. Пример 1:$track.window(-1,0)[0] Пример 2:geometry($track.window(-1,0)[0]["x"] | Пример 1: при оценивании в каждом пространственном объекте таблица показывает следующие результаты.
Пример 2: Оценено в индексе 2 (значение 20): 1 |