Изучаем язык Arcade (и немного обесцвечивание коралловых рифов)

Как часто вы размещаете свои данные на портале/ArcGIS Online или находите чьи-то чужие, и это не совсем то, что вам было нужно? Поле в атрибутивной таблице, которое вам хотелось бы видеть как процентное, кто-то опубликовал как текстовое, названия улиц почему-то были записаны капслоком, либо нужного вам поля вообще нет.

Раньше единственным доступным способом привести данные в подходящий вид было вернуться к исходному слою, добавить новое поле, рассчитать новое значение с помощью калькулятора и заново всё разместить. Либо, если вы используете материалы другого человека, вы вообще можете не дождаться, пока «кто-то» обновит свой опубликованный слой или добавит новое поле в нужном формате.

С появлением скриптового  языка Arcade вы теперь можете отображать на карте атрибутивные значения в подходящем формате или создавать абсолютно новые буквально за минуты. И да, вам не нужно быть программистом, чтобы научиться пользоваться Arcade, сэкономить себе кучу времени и взять виртуальный пирожок с полочки;)

Что такое Arcade и зачем его применять?

Arcade — это скриптовый язык на основе JavaScript, который создан для расчета новых значений «на лету», и который работает на всех продуктах платформы ArcGIS. В Arcade доступны разные типы функций — логические, математические, геометрические, для работы с числовыми данными, для дат, для текстовых данных.

Если вы создаете выражение Arcade для веб-карты в ArcGIS Online, оно также будет доступно на всех веб-приложениях на основе данной карты. Вы можете создавать выражение Arcade везде, где есть возможность использовать атрибутивные значения данных на карте. С помощью ArcGIS Online, ArcGIS Pro, ArcGIS Runtime и ArcGIS API for JavaScript вы можете создавать выражения для визуализации данных, создания надписей, всплывающих окон, вычислений и ярлыков.

Разберем на примере, как использовать Arcade для визуализации.

Нам нужно надписать особо охраняемые природные территории на карте. Однако, в поле «ООПТ» названия всех объектов написаны прописными буквами. С помощью встроенной текстовой функции Proper в Arcade можно быстро отобразить названия территорий в более аккуратном виде – строчными буквами, с первой заглавной буквой.Arcade может использоваться для быстрых расчетов наподобие excel, как на примере выше, или для базовых вычислений, например, объединение двух полей. Но кроме того, его можно использовать для сложных пространственных вычислений, с переменными, циклическими и условными (ELSE, IF) алгоритмами. Arcade также содержит геометрические функции, которые позволяют нам рассчитать площади, длины и провести простые операции наложения.

Начнем осваивать Arcade в три шага

Давайте напишем выражение Arcade, чтобы ознакомиться с интерфейсом и посмотреть, как это вообще работает. Мы сделаем это в 3 шага:

  1. Создадим новое выражение.
  2. Используем атрибут из слоя чтобы создать на его основе новое значение.
  3. Протестируем и применим на карте.

В этом примере мы используем карту со слоем из Живого Атласа, где на основе данных дистанционного зондирования выявляются зоны коралловых рифов под угрозой обесцвечивания.

Обесцвечивание — потеря кораллами водорослей, живущих с ними в симбиозе, что приводит к потере цвета и омертвлению кораллового рифа. Установлено, что обесцвеченные колонии не растут и легче разрушаются волновой деятельностью.

Данные на карте находятся в режиме реального времени, и они ежедневно обновляются NOAA (Программа мониторинга за коралловыми рифами при Национальном управлении океанических и атмосферных исследований). Повышение температуры воды может приводить к обесцвечиванию коралловых рифов, поэтому наблюдение за температурой океанических вод на основе этих данных может помочь точечно определить коралловые рифы, которые находятся в опасности.

Легенда карты и всплывающее окно показывают температуру поверхности воды на виртуальных станциях в океане в зоне коралловых рифов. Температура отображается в градусах Фаренгейта. Мы настроим отображение температуры в более привычных нам градусах Цельсия.

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

С = (F — 32) * 5/9

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

Шаг 1: создание нового выражения

Как уже было  отмечено ранее, выражение Arcade выступает в качестве нового атрибута на карте. Чтобы визуализировать карту на основе выражения Arcade, для начала примените «Изменить стиль» и в окне «Выберите атрибут для отображения» нажмите «Новое выражение».

Откроется окно создания выражений.

Точно также можно создавать новое выражение при отображении надписей или прозрачности слоя. А для всплывающих окон имеется кнопка «Добавить» в разделе «Атрибутивные выражения».

Задайте понятное имя новому выражению (именно оно будет отображаться в легенде карты). Не забудьте сохранить.

В самом окне по умолчанию добавлен пример выражения Arcade. Вы можете его удалить. Также вы можете оставить здесь краткий комментарий, оформив его двойной косой чертой (//).

Шаг 2: используем один из атрибутов слоя для вычисления нового значения

С правой стороны в диалоговом окне вы можете увидеть глобальные переменные вашего слоя, с которыми можно работать — список атрибутивных полей. У каждого поля перед названием есть символ $feature, что означает, что любой элемент карты можно задействовать в выражении. Если бы мы создавали выражение Arcade в настройках всплывающего окна, то были бы дополнительные глобальные переменные, такие как карта ($map), которая дает доступ к другим слоям карты с помощью функции FeatureSet().

В закладке «Функции» представлены все доступные функции — математические, логические и другие, как, например, функция Proper() из предыдущего примера. Описание каждой функции доступно здесь же, под значком информация (i).

Если вам нужно повторно использовать ранее созданное выражение, вы можете найти его в закладке «Существующий». Эта закладка появляется, как только вы где-либо создаете выражение.

Закладка «Константы» содержит элементы форматирования строки, например, двойные кавычки, либо универсальные постоянные, такие, как число π.

В левой стороне окна мы будем писать само выражение. В списке переменных находим атрибутивное поле Sea Surface Temperature (F) (температура поверхности моря). Кликаем на $feature.sst, чтобы добавить переменную в выражение.

Теперь напишем уравнение для перевода градусов Фаренгейтов в градусы Цельсия по формуле, которая была выше. В качестве знака умножения используем символ звездочки (*), как и в excel. Выражение будет выглядеть так:

($feature.sst — 32) * 5/9

Шаг 3: тестируем и применяем

Выражение обязательно нужно проверить, чтобы убедиться, что оно рабочее. При нажатии кнопки «Критерий», в окне результатов выводится итоговое значение кода (в случае, если ваше выражение состояло только из одной строки, выводится значение этой строки). Если выражение более сложное, вы можете использовать команду return, чтобы обозначить, что именно должно выводиться в итоге. В нашем примере в результате выводится числовое значение — 28,7999…

Чтобы убедиться, что выражение работает, выберите нужное атрибутивное поле из списка справа и нажмите на значок карандаша. Теперь введем значение по Фаренгейту — «81», а в окне результата отображается значение по Цельсию — «27.2222». Отлично! Это сработало.

Далее, мы используем полученное выражение так же, как и обычное атрибутивное значение. В этом примере мы применим стиль отображения на карте «Числа и количества (цвет)».

Далее заходим в «Параметры» — Изменить символы — Заливка — и меняем цветовую шкалу на более яркую. Уровень прозрачности ставим 0%, затем нажимаем «ОК» и Готово».» Теперь символы на карте отображаются в зависимости от градусов Цельсия.

Мы сделали это! Только что мы совместно написали первое выражение Arcade. Вы можете открыть эту же карту ArcGIS Online и самостоятельно попробовать создать выражение Arcade с другими атрибутами. Для этого нажмите «Изменить карту» в правом верхнем углу карты.

Что мы узнали об Arcade

  • Язык Arcade отлично подходит для того, чтобы делать вычисления «на лету» и помогает сэкономить время.
  • Вам не нужно быть владельцем слоя или отдельно вычислять поле с помощью калькулятора, чтобы сразу же увидеть преобразование значений.
  • Arcade упрощает процесс картографирования, а также дает нам больше самостоятельности в управлении данными.
  • Вы можете погрузиться в более детальное изучение данных вместо рутинных преобразований и форматирования полей.
  • Это ещё не всё.

Ещё материалы по теме Arcade:

Подписи и динамическое оформление с помощью Arcade в ArcGIS

Форматирование числовых полей и дат в ArcGIS