Skip To Content

Использование выражений в GeoAnalytics Tools

В наборе инструментов GeoAnalytics Tools находится множество инструментов, позволяющих вам применить выражение. Следующие инструменты имеют опцию для применения выражения:

Инструменты GeoAnalytics Tools, использующие выражения, имеют множество способов применения, но также и ограничения в применении выражений.

Заново создать треки и Создать буферы

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

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

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

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

Присоединить объекты

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

В некоторых случаях вы можете захотеть указать условие для выбора объектов, которые должны быть включены в соединение. Можно выполнять как простые условия присоединения (такие как field a > field c), так и сложные условия. Условия тестируются на каждом объекте, чтобы определить, что будет проанализировано. Вычисления выполняются при запуске анализа на вашем ArcGIS GeoAnalytics Server.

Выражения для условий присоединения могут использовать простые вычисления и более сложные встроенные функции для создания условий. Условия присоединения не могут использовать функцию as_distance. Условия присоединения должны всегда иметь результат true или false.

В разделах ниже приводятся примеры выражений.

Простые вычисления

Простые математические примеры

Инструменты Заново создать треки и Создать буферы могут обрабатывать числа математическим образом.

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

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

a + b

a плюс b

["fieldname"] + 2.5

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

4.0

a - b

a минус b

["fieldname"]- 2.2

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

1.1

a * b

a, умноженное на b

["fieldname"] * 2.2

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

4.4

a / b

a разделить на b

["fieldname"] / 1.25

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

3.2

abs( a )

Возвращает абсолютное (положительное) значение числа a.

abs(["fieldname"])

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

1.5

log ( a )

Возвращает натуральный логарифм (по основанию e) от a.

log(["fieldname"])

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

0

sin ( a )

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

sin(["fieldname"])

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

1

cos( a )

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

cos(["fieldname"])

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

1

tan( a )

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

tan(["fieldname"])

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

0

sqrt( a )

Возвращает квадратный корень a.

sqrt(["fieldname"])

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

3

min( a, b )

Возвращает самое малое значение числа между a и b.

min("fieldname", -3)

fieldname содержит значение 1.5 и значение -3

-3

max( a, b )

Возвращает самое высокое значение числа между a или b.

max("fieldname1", "fieldname2")

fieldname1 содержит значение 1.5, и fieldname2 содержит значение -3

1.5

Пример умножения для выражения буфера

["Distance"] * 2

Пример умножения для выражения условия присоединения

["Distance"] * 2 > 5

Встроенные функции для GeoAnalytics Tools

Примеры функции As distance

Функции as distance приводят числовые значения к линейным расстояниям, которые могут затем использоваться в математическом выражении.

Инструменты Заново создать треки и Создать буферы могут использовать функции as distance. Если числовое значение используется без функции as distance, единицами измерения будут считаться метры.

Инструмент Присоединить объекты не может использовать функции as distance.

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

as_meters( <value> )

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

as_meters( ["fieldname"] )

as_meters(150)

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

as_kilometers( <value> )

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

as_kilometers( ["fieldname"] )

as_kilometers(150)

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

as_feet( <value> )

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

as_feet( ["fieldname"] )

as_feet(150)

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

as_yards( <value> )

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

as_yards( ["fieldname"] )

as_yards(150)

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

as_nautical_miles( <value> )

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

as_nautical_miles( ["fieldname"] )

as_nautical_miles(150)

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

as_miles( <value> )

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

as_miles( ["fieldname"] )

as_miles(150)

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

Для каждого объекта умножьте поле Расстояние, полагая, что оно в километрах, и добавьте 10 метров для выражения буфера.

as_kilometers(["Distance"]) * 3 + as_meters(10)

Дополнительные встроенные функции для выражений буфера GeoAnalytics Tools

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

Инструменты Заново создать треки и Создать буферы могут использовать расширенные функции.

Расширенные операции могут использоваться в инструменте Присоединить объекты при создании условий присоединения.

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

constrain(<value>,<low>,<high>)

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

constrain( distance, 0, 10)

constrain(['Store dist'], 6, distance)

Возвращает 0, если distance меньше 0, 10, если distance больше 10, и distance в других случаях.

Возвращает 6, если Store dist меньше 6, distance, если Store dist больше distance, и Store dist в других случаях.

iff(<condition>,<true value>,<false value>)

Возвращает одно значение, если условие оценивается как true, и другое значение, если условие оценивается как false.

<true value> и <false value> могут быть следующими:

  • Числовое поле. Если в имени поля есть пробел, используйте квадратные скобки.
  • Число.
  • Функция.

iff(field1 > field2, field1, 0)

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

Возвращает field1, если field1 больше field2, и 0 в других случаях.

Возвращает результат второй функции iff, если field1 больше field2, и 0 в других случаях.

when(<expression1>, <result1>, <expression2>, <result2>, ... , <expressionN>, <resultN>, <default>)

Оценивает несколько выражений поочередно до тех пор, пока одно из них не даст значения true.

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

when((field1 + 10) > 1, 1,(field2 + 10) > 2 , 2, field3)

Если field1 + 10 больше 1, возвращает 1. Если нет, проверьте, что field2 + 10 больше 2. Если да, то будет возвращено 2. Если нет, то будет возвращено field3.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

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

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

decode(field1 + 3 , field1, 1, 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> OR <condition2>

встречено условие один или условие два

(abs(-5) == 5) OR (10 > 2)

Да

<condition1> AND <condition2>

встречено условие один и условие два

(abs(-5) == 5) AND (10 < 2)

Нет

Пример выражения буфера с использованием расширенных функций и условий

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

Пример умножения для условия присоединения

iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > ["Distance"] * 2