Использование выражений Arcade в диаграммах

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

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

Следующие примеры являются потенциальными вариантами использования для настройки диаграмм с помощью Arcade.

Примеры с текстом

Arcade предоставляет множество функций, которые обрабатывают текстовые значения для создания и настройки диаграмм. Например, можно сделать диаграмму более удобочитаемой, отформатировав строковые значения, набранные заглавными буквами (КАЛИФОРНИЯ), чтобы использовать заглавные буквы только в начале (Калифорния). Это может быть выполнено с помощью функции Proper в Arcade:


# Format "CALIFORNIA" as "California"
Proper($feature.STATE_NAME);

Чтобы объединить несколько строковых полей в один текстовый выход, используйте функцию Concatenate. В следующем примере названия каждого объекта города и штата объединены в одну строку:


# Combine CITY_NAME (eg "LOS_ANGELES") and STATE_NAME (eg "CALIFORNIA") into "LOS_ANGELES, CALIFORNIA"
Concatenate($feature.CITY_NAME, ", ", $feature.STATE_NAME);

И наоборот, могут быть сценарии, в которых было бы полезно проанализировать строку, чтобы найти определенные части, содержащиеся в тексте. Например, используйте функцию Split для определения названия города в адресе (123 Main Street, Redlands, CA). В следующем примере адреса разбиваются запятыми и используется индексация массива для определения названия города:


# Split string on "," and return the second element (ie, the city name)
Split($feature.FULL_ADDRESS, ",")[1];

Вы также можете использовать управляющие структуры в Arcade для переклассификации текстовых значений на основе логических условий. В следующем примере функция Find используется для группировки штормовых событий, связанных с торнадо, в категорию Торнадо, а все события, не связанные с торнадо, группируются в категорию Другие:


if (Find($feature.EVENT_TYPE, "TORNADO") >= 0) {
    return "Tornado";
} else { 
    return "Other";
}

Примеры с датами

Arcade предоставляет множество функций для обработки полей, связанных с датами. Например, набор данных может иметь несколько полей, предоставляющих информацию о дате, но эти поля должны быть объединены, чтобы создать поле даты для использования во временных диаграммах. Функция Date принимает соответствующие компоненты даты и выводит значение даты:


Date($feature.YEAR, $feature.MONTH, $feature.DAY);

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


DateDiff($feature.OPEN_DATE, $feature.CLOSE_DATE, "DAYS");

Arcade также предоставляет функции для анализа сведений из поля Date. Например, чтобы понять шаблоны дня недели для поля даты, используйте функцию ISOWeekday для возврата дня недели для даты:


ISOWeekday($feature.DATE);

Числовые примеры

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


$feature.POPULATION / AreaGeodetic($feature, 'square-miles')

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


Average([$feature.SCORE1, $feature.SCORE2, $feature.SCORE3])

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


if ($feature.MILES_PER_GALLON >= 30) {
    return "Good"
} else if ($feature.MILES_PER_GALLON >= 20) {
    return "Okay"
} else {
    return "Poor"
}