Примеры выражений буфера в ArcGIS Enterprise 10.6 и более поздней

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

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

Более подробно о выражениях буфера, поддерживаемых версиями 10.5 и 10.5.1

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

Выражения буфера используются инструментами Заново создать треки и Создать буферы.

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

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

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

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

Умножение

$feature["Distance"] * 2

Примеры логических операторов

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

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

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.

Примеры функций расстояний

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

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

as_meters(<value>)

Применяет вычисления, предполагая, что входные значения заданы в метрах.

as_meters( $feature["fieldname"] )

as_meters(150)

Результатом является буфер в 150 метров.

as_kilometers(<value>)

Применяет вычисления, предполагая, что входные значения заданы в километрах.

as_kilometers( $feature["fieldname"] )

as_kilometers(150)

Результатом является буфер в 150 километров.

as_feet(<value>)

Применяет вычисления, предполагая, что входные значения заданы в футах.

as_feet( $feature["fieldname"] )

as_feet(150)

Результатом является буфер в 150 футов.

as_yards(<value>)

Применяет вычисления, предполагая, что входные значения заданы в ярдах.

as_yards( $feature["fieldname"] )

as_yards(150)

Результатом является буфер в 150 ярдов.

as_nautical_miles(<value>)

Применяет вычисления, предполагая, что входные значения заданы в морских милях.

as_nautical_miles( $feature["fieldname"] )

as_nautical_miles(150)

Результатом является буфер в 150 морских миль.

as_miles(<value>)

Применяет вычисления, предполагая, что входные значения заданы в милях.

as_miles( $feature["fieldname"] )

as_miles(150)

Результатом является буфер в 150 миль.

Условные операторы

Выражения условий могут использовать следующие операторы:

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

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

Примеры с включенным трекингом

В ArcGIS Enterprise 10.6.1 вы можете использовать уравнения с включенным трекингом в 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.

Используйте следующие выражения трека для вычисления расстояния, скорости и ускорения на треках в версии 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]

Связанные разделы