В наборе инструментов GeoAnalytics Tools находится множество инструментов, позволяющих вам применить выражение. Следующие инструменты имеют опцию для применения выражения:
Инструменты GeoAnalytics Tools, использующие выражения, имеют множество способов применения, но также и ограничения в применении выражений.
Заново создать треки и Создать буферы
Выражения буфера используются инструментами Заново создать треки и Создать буферы.
Размеры буферов чаще всего вводятся с помощью констант или значений полей. Однако ввод значений не является единственным способом указать размер буфера при использовании GeoAnalytics Tools. В некоторых случаях вам может потребоваться выполнить математические вычисления, чтобы задать размер буфера. Можно выполнять как простые, так и сложные вычисления над всеми записями. Это вычисление применяется к каждому объекту, участвующему в анализе. Вычисления выполняются при запуске анализа на вашем ArcGIS GeoAnalytics Server.
Выражения для буферов могут использовать простые вычисления и все встроенные функции.
В разделах ниже приводятся примеры использования выражений буфера.
Присоединить объекты
Выражения используются в инструменте Присоединить объекты для указания условий присоединения.
В некоторых случаях вы можете захотеть указать условие для выбора объектов, которые должны быть включены в соединение. Можно выполнять как простые условия присоединения (такие как field a > field c), так и сложные условия. Условия тестируются на каждом объекте, чтобы определить, что будет проанализировано. Вычисления выполняются при запуске анализа на вашем ArcGIS GeoAnalytics Server.
Выражения для условий присоединения могут использовать простые вычисления и более сложные встроенные функции для создания условий. Условия присоединения не могут использовать функцию as_distance. Условия присоединения должны всегда иметь результат true или false.
В разделах ниже приводятся примеры выражений.
Простые вычисления
Простые математические примеры
Инструменты Заново создать треки и Создать буферы могут обрабатывать числа математическим образом.
Математические операции могут использоваться в инструменте Присоединить объекты при создании условий присоединения.
Оператор | Объяснение | Пример: | Результат |
---|---|---|---|
| a плюс b | ["fieldname"] + 2.5 fieldname содержит значение 1.5 | 4.0 |
| a минус b | ["fieldname"]- 2.2 fieldname содержит значение 3.3 | 1.1 |
| a, умноженное на b | ["fieldname"] * 2.2 fieldname содержит значение 2.0 | 4.4 |
| a разделить на b | ["fieldname"] / 1.25 fieldname содержит значение 4.0 | 3.2 |
| Возвращает абсолютное (положительное) значение числа a. | abs(["fieldname"]) fieldname содержит значение -1.5 | 1.5 |
| Возвращает натуральный логарифм (по основанию e) от a. | log(["fieldname"]) fieldname содержит значение 1 | 0 |
| Возвращает тригонометрический синус a. Входные данные должны представлять значение угла в радианах. | sin(["fieldname"]) fieldname содержит значение 1.5707 | 1 |
| Возвращает тригонометрический косинус a. Входные данные должны представлять значение угла в радианах. | cos(["fieldname"]) fieldname содержит значение 0 | 1 |
| Возвращает тангенс a. Входные данные должны представлять значение угла в радианах. | tan(["fieldname"]) fieldname содержит значение 0 | 0 |
| Возвращает квадратный корень a. | sqrt(["fieldname"]) fieldname содержит значение 9 | 3 |
| Возвращает самое малое значение числа между a и b. | min("fieldname", -3) fieldname содержит значение 1.5 и значение -3 | -3 |
| Возвращает самое высокое значение числа между 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.
| 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 оценивает выражение, а затем сравнивает его значение с последующими параметрами. Если выражение совпадает, возвращается следующее значение параметра. Если нет, существует опция, чтобы последний параметр стал возвращаемым значением по умолчанию.
| 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 | 10 > 2 | Нет |
| a больше или равно b a меньше или равно b | abs(-10) >= 10 | Да |
| a не равно b | abs(-3) != -3 | Да |
| a равно b | abs(-5) == 5 | Да |
| встречено условие один или условие два | (abs(-5) == 5) OR (10 > 2) | Да |
| встречено условие один и условие два | (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