Loading
Пропустить Навигационные Ссылки.

Авторизоваться
Для зарегистрированных пользователей

Применение тайловой схемы доступа к картам в интерфейсах, построенных по технологии GEOSMIS

В научных и прикладных системах дистанционного мониторинга, разрабатываемых в ИКИ РАН, предоставляется доступ к достаточно большим архивам спутниковых данных различного пространственного разрешения и размеров, специализированной картографии и тематическим продуктам, в том числе, к данным и возможностям ЦКП «ИКИ-Мониторинг». Для создания этих систем была использована технология GEOSMIS, представляющая собой программный комплекс для построения интерфейсов работы c пространственной информацией в системах дистанционного мониторинга, включающий в себя картографический веб-сервис SMISWMS. Эта технология позволяет одновременно просматривать любые из описанных выше тематических данных на карте, при этом количество включённых картографических слоёв может достигать нескольких десятков. Эксперт, работая в картографическом веб-интерфейсе, в силу специфики решаемых задач постоянно переключается из одной зоны интереса в другую. Изменяя координаты карты, ему приходится достаточно долго ждать для каждого слоя данных картинку, формирующуюся на сервере по его зоне интереса, что создаёт некоторые неудобства. Долгое ожидание формирования слоев обусловлено тем, что карта, во-первых, готовится сразу под всю область экрана пользователя, а, во-вторых, карта строится «на лету» под произвольно выбранный диапазон координат. Для решения проблемы времени ожидания данных в системах дистанционного мониторинга может быть успешно применен подход с тайловой (блочной) схемой доступа, на сегодняшний день широко используемой в различных картографических службах и приложениях и обеспечивающей более «динамичную» и быструю загрузку карт.
Тайловый доступ подразумевает собой асинхронный запрос данных небольшими блоками по существующей регулярной сетке (по умолчанию размер тайла - 256х256 пикселей). При таком типе запроса данные на сервере формируются не под всю область интереса, а только под один тайл, что сильно уменьшает время подготовки данных, а при использовании пула серверов обеспечивает более быстрое получение всех тайлов под область интереса, а значит и саму визуализацию данных. Также при тайловой схеме используется фиксированный набор масштабных уровней, что позволяет ограничить вариацию разрешений карты, с которой работает пользователь, а значит и количество запросов к серверу. При изменении масштабного уровня пользователь никогда не видит пустую карту, а видит тайлы предыдущего уровня и асинхронно подгружающиеся новые тайлы, что делает его работу более удобной. Для ряда данных, которые редко меняются или совсем не меняются со временем и не вычисляются «на лету», например картографии или многолетней спутниковой подложки, можно использовать подход со статическими тайлами, при котором данные не готовятся на сервере, а запрашиваются с сервера по номеру в регулярной сетке как заранее подготовленные картинки. Запрос статических тайлов является более легковесным и отрабатывает еще быстрее, чем для динамических, при этом изображения кэшируются в браузере и больше не перезапрашиваются. Кэширование динамических тайлов в браузере организовать сложнее, так как они формируются посредством cgi-запроса, но для них применим подход с кэшированием на сервере по номеру тайла в регулярной сетке.

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

  • ImageWMS (изображение под всю область интереса, формирующееся через Web Map Service);
  • TileWMS (изображение, формирующееся через Web Map Service под один тайл);
  • Tile(xyz) (готовое изображение, получаемое с сервера по номеру тайла в регулярной сетке).


До недавнего времени технология GEOSMIS позволяла работать только с одним типом запроса растровых данных – ImageWMS, что приводило к неудобствам, описанным выше. В связи с этим было принято решение доработать программный комплекс и расширить его функционал, чтобы он обеспечивал работу картографического интерфейса с использованием всех трех типов запросов. Для этого потребовалось доработать модуль работы с картографическими данными smismap, используемый в программном комплексе GEOSMIS.

В настоящее время доступно достаточно много картографических JavaScript библиотек c открытым исходным кодом, обеспечивающих работу по тайловой схеме. На первом этапе работ было принято решение выбрать наиболее подходящую для задач спутникового мониторинга и интегрировать ее в программный комплекс GEOSMIS, расширив необходимым функционалом. Были изучены наиболее популярные библиотеки: OpenLayers.js и Leaflet.js. Выбор был сделан в пользу Leaflet.js как ведущей и широко используемой библиотеки для создания карт с большим набором дополнительных плагинов и легко наследуемых и расширяющихся классов компонент.

Чтобы не менять взаимодействие объекта карты с другими компонентами картографического интерфейса, были проведены следующие работы по интеграции новой библиотеки в программный комплекс GEOSMIS:

  1. Был взят используемый в GEOSMIS класс карты smisMap и документация к нему, выделены все внешние методы и свойства класса.
  2. Исследован класс карты Map библиотеки Leaflet.js, расширен необходимыми свойствами и методами.
  3. То же самое было проделано с классами других компонент (точка, полигон, кнопки управления и т.д.)
  4. Необходимая функциональность, не поддерживаемая по умолчанию в классах библиотеки Leaflet.js, была реализована с помощью использования дополнительных плагинов и написания новых.
  5. Был собран и протестирован прототип картографического интерфейса с использованием нового модуля smismap в рамках проекта «Вега-Лес».

 
Рисунок 3.2.1.1 — Прототип картографического интерфейса проекта «Вега-Лес» (асинхронная загрузка тайлов).

В процессе тестирования прототипа нового картографического интерфейса было обнаружено, что при одновременной работе с большим количеством слоев карты, формируемых только посредством TileWMS, возникают сложности с числом cgi-запросов на рисование в браузере, что является неоптимальным с точки зрения производительности и при этом скорость работы отчасти зависит от оперативной памяти компьютера пользователя. При этом, как говорилось выше, использование только статических тайлов Tile(xyz) для систем спутникового мониторинга, работающих с большим объёмом постоянно обновляющихся данных, которые часто формируются «на лету», невозможно. Поэтому было принято решение рисовать динамическими тайлами только «тяжеловесные» обновляющиеся данные и выбрать следующее разделение картографических слоев на типы запросов. Сводная информация приведена в таблице 3.2.1.1.

Таблица 3.2.1.1 — Разбиение картографических слоев на типы запросов.

TileWMS

Tile(xyz)

ImageWMS

Спутниковые данные и данные их анализа

Редко меняющаяся картография

Специализированная картография

Непрозрачные слои карты

Многолетние композитные  изображения

Векторные слои

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