Динамическое оформление объектов и подписи теперь можно создать проще с помощью скриптового языка 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.