Динамическое оформление объектов и подписи теперь можно создать проще с помощью скриптового языка Arcade, который вышел в релиз с версии ArcGIS 10.5. Пока работа с ним доступна в ArcGIS Pro и веб-вьюере ArcGIS Online, ArcGIS Runtime APIs и ArcGIS API for JavaScript, но уже в следующем версии ArcGIS 10.5.1 разработчики обещают добавить возможность настройки оформления непосредственно в браузере через Portal for ArcGIS.
Приведем небольшой пример применения Arcade из реальной жизни. В моей организации опубликован слой с контурами домов, для которых указано потребление электроэнергии по месяцам. Стандартными средствами я могу настроить в браузере оформление по одному из полей
Но что делать, если я хочу отобразить потребление электроэнергии за квартал и вывести это усредненное значение на карту?! Чтобы не создавать новое поле, а потом калькулятором поля вычислять среднее за квартал, мы и воспользуемся языком Arcade.
Воспользуемся доступной функцией Average (список всех функций) и вычислим среднее потребление за 3 месяца, это виртуальное значение будет участвовать в оформлении. Обратите внимание, что это будет значение, формируемое на лету, т.е. если у вас настроено обновление полей по месяцам, например, для следующего года, то оформление за квартал обновится автоматически. Писать выражения просто и наглядно благодаря интерактивному редактору:
1. Начинаем строить новое выражение в окне Smart Mapping
2. Находим необходимую функцию. Каждая имеет подсказку
3. Добавляем необходимые переменные из списка полей, в итоге образуется выражение Average($feature.июнь, $feature.май, $feature.апрель)
,
4. Доступно тестирование выражения
5. Теперь оформление выполнено в соответствии со средним значением за квартал. При этом остальные функции оформления (цветовая шкала, варианты оформления и др.) начинают работать для этого значения. Хотелось бы также вывести это усредненное значение в подписи к каждому дому.
Подписи
6. Копируем уже сформированное выражение и добавляем в надписи. В исходном виде выражения возникает очень много знаков после запятой, а также нет размерности
7. Доработаем выражение, округлив значение до двух знаков после запятой с помощью функции Round, а также добавим текст размерности. Новое выражение: Round(Average($feature.июнь, $feature.май, $feature.апрель),2) + » кВт∙ч» и результат:
Вот так быстро мы смогли настроить оформление и подписи непосредственно в браузере благодаря языку Arcade.