Skip to main content

Выражения вычисления поля

Инструмент Вычислить поле использует выражения Arcade для определения значений полей. Вы можете выполнять как простые, так и сложные вычисления над всеми записями. Эти вычисления применяются к каждому объекту. В разделах ниже приводятся примеры использования выражения вычисления поля. Вычисления выполняются при запуске анализа на ArcGIS GeoAnalytics Server и всегда создают новый слой.

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

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

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

Прежние версии:

Расширение ArcGIS GeoAnalytics Server устаревает в ArcGIS Enterprise. Финальный релиз GeoAnalytics Server был включен в состав ArcGIS Enterprise 11.3. Эти инструменты доступны в версии ArcGIS Enterprise 11.3 и более ранних.

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

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

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

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

  • values — массив строковых значений для соединения.

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

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

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

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 значения месяцев возможны в диапазоне от 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>)

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

  • 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 Oct 2016 11:23:03 am

Пример 2: 14-е января 2017 12:00:00

Пример 3: Возвращает текущее время

DateDiff(<date1>, <date2>, <units>)

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

  • date1 – значение даты, из которого вычитается вторая дата.

  • date2 – значение даты, которая используется как вычитаемое для первой заданной даты.

  • units (дополнительно) – единицы, в которых возвращается разность двух заданных дат. Поддерживаемые типы единиц включают 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

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

Используйте следующие выражения отслеживания в ArcGIS Enterprise 10.6:

Функция

Объяснение

Пример

Результат

$track.field["fieldname"].history(<value1>)

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

  • Положительное число возвращает массив, начиная с заданного индекса до текущего объекта.

  • Отрицательное число возвращает шаг текущего времени и значения предшествующих временных шагов <value1> - 1.

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 40 (индекс 3) и value 50 (индекс 4), которое равно 45. Если это вычисляется по индексу 7, результатом будет среднее для 70 и 80, что равно 75.

Пример 4 возвращает первый элемент (индекс 0) массива, созданного в примере 2, который равен 50.

$track.field["fieldname"].history(<value1>, <value2>)

Возвращает ряд значений, начиная с 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 января 15:00: 1483369200000

Пример 2: Возвращает 31 декабря 14:00: 1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

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

  • Индекс текущего объекта – 0.

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

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

Функция 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: При оценке каждого объекта таблица показывает следующие результаты.

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

Результат

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.

$track.geometry.window(<value1>, <value2>)

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

  • Индекс текущего объекта – 0.

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

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

Функция 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: При оценке каждого объекта таблица показывает следующие результаты.

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

Результат

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

$track.window(<value1>, <value2>)

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

  • Индекс текущего объекта – 0.

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

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

Функция 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: При оценке каждого объекта таблица показывает следующие результаты.

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

Результат

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

Используйте следующие выражения отслеживания в ArcGIS Enterprise 10.6.1 или более новых версиях:

Функция

Объяснение

Пример

Результат

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

Используйте следующие выражения трека для расчета в ArcGIS Enterprise 10.9 или более поздней версии расстояния, скорости и ускорения на треке.

Все расчеты расстояния производятся в метрах, скорость - в метрах в секунду, а ускорение - в метрах в секунду в квадрате. Расстояния измеряются с использованием геодезических расстояний.

Функция

Объяснение

TrackCurrentDistance()

Сумма расстояний, пройденных между наблюдениями от первого до текущего наблюдения.

TrackDistanceAt(value)

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

TrackDistanceWindow(value1, value2)

Расстояние между первым значением (включительно) и последним значением (не включительно) в окне о текущем наблюдении (0).

TrackCurrentSpeed()

Скорость между предыдущим наблюдением и текущим наблюдением.

TrackSpeedAt(value1)

Скорость при наблюдении относительно текущего наблюдения. Например, при значении 2 это скорость при наблюдении через два наблюдения после текущего.

TrackSpeedWindow(value1, value2)

Значения скорости между первым значением (включительно) и последним значением (не включительно) в окне вокруг текущего наблюдения (0).

TrackCurrentAcceleration()

Ускорение между предыдущим наблюдением и текущим наблюдением.

TrackAccelerationAt(value1)

Ускорение на наблюдении относительно текущего наблюдения.

TrackAccelerationWindow(value1, value2)

Значения ускорения между первым значением (включительно) и последним значением (не включительно) в окне вокруг текущего наблюдения (0).

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

Пример изображения трека с шестью точками

Функция

Пример результата

TrackCurrentDistance()

ID точки

Результат (метры)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

ID точки

Результат (метры)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

null

P6

null

TrackDistanceWindow(-1, 2)

ID точки

Результат (метры)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

ID точки

Результат (метров в секунду)

P1

0

P2

60/60

1

P3

80/60

1,33

P4

30/60

.5

P5

35/60

0,5833

P6

25/60

0,4167

TrackSpeedAt(2)

ID точки

Результат (метров в секунду)

P1

80/60

1,33

P2

30/60

.5

P3

35/60

0,5833

P4

25/60

0,4167

P5

null

P6

null

TrackSpeedWindow(-1, 2)

ID точки

Результат (метров в секунду)

P1

[0, 1]

P2

[0, 1, 1.3]

P3

[1, 1.3, 0.5]

P4

[1.3, 0.5, 0.583]

P5

[0.5, 0.583, -0.4167]

P6

[0.583, -0.4167]

TrackCurrentAcceleration()

ID точки

Результат (метров в секунду²)

P1

0

P2

0,0167

P3

0,0056

P4

-0,0014

P5

0,0014

P6

-0,0028

TrackAccelerationAt(2)

ID точки

Результат (метров в секунду²)

P1

0,0056

P2

-0,0014

P3

0,0014

P4

-0,0028

P5

null

P6

null

TrackAccelerationWindow(-1, 2)

ID точки

Результат (метров в секунду²)

P1

[0, 0.0167]

P2

[0, 0.0167, 0.0056]

P3

[0.0167, 0.0056 , -0.0014]

P4

[0.0056 , -0.0014, 0.0014]

P5

[-0.0014, 0.0014, -0.0028]

P6

[0.0014, -0.0028]