Выражения Arcade в наборе инструментов GeoAnalytics Desktop

Некоторые инструменты GeoAnalytics Desktop используют в анализе выражения Arcade. Инструменты и функции выражений перечислены ниже.

Применяя Arcade, формат имен поле становится $feature["field name"] или $feature.fieldname. Первая опция, $feature["field name"], требуется, когда имя поля содержит пробел. Все примеры ниже используют эту опцию. Все инструмент используют формат $feature["field name"], за исключением инструмента Присоединить объекты. В нем используются $target["field name"] и $join["field name"] для настройки используемого набора данных.

Более подробно о выражениях Arcade

Выражения Arcade используются следующими инструментами в наборе GeoAnalytics Desktop:

  • Выражения буфера в Реконструировать треки и Создать буферы—выполняет математическое вычисление для настройки размера буферов. Вы можете выполнять как простые, так и сложные вычисления над всеми записями. Эти вычисления применяются к каждому объекту.
  • Выражения присоединения в Присоединить объекты - определяет условие для выбора объектов, которые должны быть включены в соединение. Можно выполнять как простые условия присоединения (такие как field a > field c), так и сложные условия. Условия тестируются на каждом объекте, чтобы определить, что будет проанализировано.
  • Вычисление значений полей в Вычислить поле—выполняет простые и сложные вычисления, которые применяются ко всем записям. Эти вычисления применяются к каждому объекту.
  • Выявление событий с помощью выражений start и end в Найти инциденты— определяет начальное и конечное условия для инцидентов. Условие инструмента Выявление инцидентов всегда должно выводить в результате true или false. Используйте условие, чтобы проверить, должен ли включаться пространственный объект в инцидент. Условия тестируются на каждом объекте, чтобы определить, какие объекты являются инцидентами.

Математическая операция и примеры функции

Выражения также могут математически обрабатывать цифры. Ниже приводится примеры доступных операций:

Более подробно о математических операциях и функциях, доступных в 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 в других случаях.

Примеры текстовых функций

Выражения Arcade могут обрабатывать текст. Ниже приводится примеры доступных операций:

Более подробно об текстовых функциях, доступных в Arcade

ОператорОбъяснениеПримерРезультат

concatenate( <values>, <separator>)

Соединяет значения вместе и возвращает строку.

  • values – массив строковых значений для соединения.
  • separator (Дополнительный) – разделитель для использования при соединении, если параметр values является массивом, или строка для соединения, если для первого параметра предоставлено одно значение. Если не задан, то он будет пустым.

fieldname содержит значение GeoAnalytics

Concatenate ([$features["fieldname"], "–", "великолепен!"], ' ')

GeoAnalytics – великолепен!

find(<searchText>, <text>, <startPos>)

Находит строку в пределах строки. Групповые символы не поддерживаются.

  • searchText – часть строки для поиска.
  • text – текст для поиска.
  • startPos (дополнительно) – индекс местоположения на основе нуля в строке для начала поиска.

fieldname1 содержит значение 14NorthStreet, и fieldname2 содержит значение North

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

Делает буквы в строке строчными.

  • value – строка, символы которой меняются на строчные.

fieldname содержит значение GEOANALYTICS

lower($feature["fieldname"])

геоаналитика

Текстовый пример использования find и lower.

find(("north"), lower("146NorthStreet"))

Примеры функций дат

Выражения Arcade могут обрабатывать даты. Ниже приводится примеры доступных операций: В Arcade, значения месяца идут в диапазоне от 0 (январь) до 11 (декабрь), дни с 1 по 31, часы с 0 (12:00 am) до 23 (11:00 pm), минуты и секунды от 0 до 59 и миллисекунды с 0 до 999.

Более подробно об операциях с датами, доступных в Arcade

ОператорОбъяснениеПримерРезультат

date( <value>, <month>, <day>, <hour>, <minute>)

Анализирует значение или набор значений в строке даты.

  • value(Дополнительно) – вводит число в миллисекундах с 1го января 1970 UTC или число, представляющее год. Если указан год, в последующих параметрах необходимо указать месяц и день. Значение также может быть строкой даты или строкой ISO 8601, которая конвертируется в дату.
  • month ( дополнительно) – Месяц (0-11), где 0 – это январь и 11 – декабрь.
  • day ( дополнительно) – день месяца (1-31).
  • hour ( дополнительно) – час дня (0 – 23).
  • minute ( дополнительно) – минута часа (0 – 59).
  • second ( дополнительно) – секунда минуты (0-59).
  • millisecond ( дополнительно) – миллисекунда секунды (0-999).

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>)

Вычитает две даты и возвращает разницу в указанных единицах.

  • date1 – значение даты, из которого вычитается вторая дата.
  • date2 – значение даты, которая используется как вычитаемое для первой заданной даты.
  • startpos (дополнительно) – единицы, в которых возвращается разность двух заданных дат. Поддерживаемые типы единиц включают: milliseconds, seconds, minutes, hours, days, months и years. Значение по умолчанию равно milliseconds.

Пример 1: DateDiff(Date(2017,1,14,0), Date())

Пример 2: DateDiff(Date(2017,1,14,0), Date(), "Years")

Результат будет зависеть от времени запуска команды.

Пример 1: -20532129137

Пример 2: -0.6546783768647119

Year(<dateValue>)

Возвращает год заданной даты.

  • value – значение даты, указывающее на год.

Пример 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.

  • expression – выражение.
  • result – результат выражения. Это может быть число или поле.
  • default – дополнительное значение, если ни одно из выражений не совпадает.

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> )

Оценивает выражение, а затем сравнивает его значение с последующими параметрами. Если выражение совпадает, возвращается следующее значение параметра. Если нет, существует опция, чтобы последний параметр стал возвращаемым значением по умолчанию.

  • conditional val – значение условия. Может быть полем или выражением.
  • case – значение для сравнения с conditional val.
  • result – результат, если соответствующий случай совпадает с conditional val.
  • defaultValue – дополнительное значение, если другие объекты не являются true.

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

Ложь

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. В инструменте Вычислить поле уравнения с трекингом можно использовать, если у входного слоя активизировано время, отмечено В выражении учитывается трекинг и одно или несколько полей идентифицируются для идентификации треков.

ФункцияОбъяснениеПримерРезультат

TrackStartTime()

Вычисляет время начала отслеживания в миллисекундах от момента времени.

Использует отслеживание с началом 2 января 2017

TrackStartTime()

1483315200000

TrackDuration()

Вычисляет продолжительность отслеживания в миллисекундах от начала до текущего временного шага.

Используется отслеживание с началом 2 января 2017 и текущим временем 4 января 2017.

TrackDuration()

172800000

TrackCurrentTime()

Вычисляет текущее время в отслеживании.

Используется объект, который был 3 января 2017 в 9:00 утра.

TrackCurrentTime()

1483434000000

TrackIndex

Возвращает временной индекс вычисляемого объекта.

Это значение вычисляется на первом объекте в отслеживании.

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

Возвращает ряд значений заданного поля для указанного индекса времени. Функциональное окно позволяет вам перемещаться вперед и назад во времени. Выражение оценивается в каждом объекте трека.

  • Индекс текущего объекта – 0.
  • Положительные значения представляют объекты, которые попадут в будущее, после текущего значения. Например, позиция 1 – это следующее значение в массиве.
  • Отрицательные значения представляют объекты из прошлого, перед текущим значением. Например, позиция -1 – это предыдущее значение в массиве.

MyField имеет расположенные по порядку следования значения [10, 20, 30, 40, 50]. Выражение оценивается в каждом объекте трека. Возвращаемые результаты включают начальный объект и не включают конечный объект.

Пример 1:TrackFieldWindow("MyField,-1,2)

Пример 2:TrackFieldWindow("MyField,-2,0)[0]

Пример 3:TrackFieldWindow("MyField,0,3)[2]

Пример 1: При оценке каждого объекта таблица показывает следующие результаты.

Оцениваемый объект

Результат

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

Пример 2: при оценке по индексу 2 (значение равно 30), возвращено: 10.

Пример 3: при оценке по индексу 2 (значение равно 30), возвращено: 50.

TrackGeometryWindow(<startIndex>, <endIndex>)

Возвращает массив значений, представляющий геометрию для указанного индекса времени. Функциональное окно позволяет вам перемещаться вперед и назад во времени. Выражение оценивается в каждом объекте трека.

  • Индекс текущего объекта – 0.
  • Положительные значения представляют объекты, которые попадут в будущее, после текущего значения. Например, позиция 1 – это следующее значение в массиве.
  • Отрицательные значения представляют объекты из прошлого, перед текущим значением. Например, позиция -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:TrackGeometryWindow(-1,2)

Пример 2: TrackGeometryWindow(0,1)[0] для линейного набора данных

Пример 3: TrackGeometryWindow(0,1)[0] для полигонального набора данных

Пример 4: Найти значение X предыдущей точки TrackGeometryWindow(-1,0)[0]["x"]

Пример 1: При оценке каждого объекта таблица показывает следующие результаты.

Оцениваемый объект

Результат

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

Пример 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 (значение равно 30): 2

TrackWindow(<value1>, <value2>)

Возвращает массив значений, представляющий геометрию и все атрибуты для указанного индекса времени. Функциональное окно позволяет вам перемещаться вперед и назад во времени.

  • Индекс текущего объекта – 0.
  • Положительные значения представляют объекты, которые попадут в будущее, после текущего значения. Например, позиция 1 – это следующее значение в массиве.
  • Отрицательные значения представляют объекты из прошлого, перед текущим значением. Например, позиция -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:TrackWindow(-1,0)[0]

Пример 2:geometry(TrackWindow(-1,0)[0]["x"]

Пример 1: При оценке каждого объекта таблица показывает следующие результаты.

Оцениваемый объект

Результат

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

Пример 2: оценено по индексу 2 (значение равно 30): 2