Arcade - это язык выражений , написанный для использования в ArcGIS, который может выполнять математические вычисления, работать с текстом и оценивать логические операторы. Выражения 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"
}