Границы России и предшественников, 850 – 2020

Рады представить наш новый проект «Границы России 850 – 2020 гг.»!

Над технологической частью проекта мы трудились последние месяцы вместе с «Руниверс» и Лабораторией исторической геоинформатики Института всеобщей истории РАН. Этот картографический проект показывает динамику политических границ России и ее предшественников.

Основные отличия от похожих проектов:

  • Высокий уровень детализации. Все границы наносились на полноценную картографическую основу. Разумеется, автоматически это не означает высокую точность, так как данные, особенно начала изученного исторического периода, сами по себе не очень точны.
  • Данные, создаваемые в рамках проекта, являются полноценными геоданными. Собранная база выступит в качестве основы других исторических проектов авторов.
  • Технологичность. Это не просто данные и не просто карта. Это система создания, подготовки и визуализации исторических данных, которая станет основой для других проектов.

Здесь мы поделимся некоторыми деталями о технологических вызовах, которые пришлось преодолеть нам с коллегами.

Результат: http://map.runivers.ru

Отрисовка границ

Задача: Избежать отрисовки полигонами

Первой задачей было придумать способ эффективного создания данных. Отрисовка полигонами сразу была отклонена. Рисовать линиями гораздо проще и удобнее, так как тратится меньше времени на контроль топологической корректности.

В результате, специалистами Лаборатории исторической геоинформатики по многочисленным источникам отрисовывался каждый линейный участок границы России. При необходимости он разрезался или наращивался. Ему присваивались атрибуты начала и конца периода, в течение которого он существовал. Никакие линии не удалялись. Дополнительно к линиям велся точечный слой атрибутивной информации, которая впоследствии присваивалась областям. Вся отрисовка и наполнение атрибутикой велись в NextGIS QGIS.

Пример изменения границ на территории современной Брянской (Россия) и Могилевской областей (Беларусь).
Пример изменения границ на территории современной Брянской (Россия) и Могилевской областей (Беларусь). Различные участки показаны разным цветом. Цифрами показаны периоды существования тех или иных участков.

Генерация временных срезов

Задача: Удобный запуск генерации полигонов по постоянно изменяемым исходным данным

Рисовать линиями удобно, но показываются на карте в результате все равно области (полигоны). Поэтому нужно было придумать способ постоянной генерации границ — полигонов территорий из базы исходных данных. Такая обработка была реализована в виде специального веб-сервиса в NextGIS Toolbox. Сервис запускался специалистами лаборатории по мере необходимости, без нашего участия.  После накопления некоторого количества изменений в исходных данных они поступали в процессинг, который:

  1. Выявлял уникальные временные диапазоны, т.е. периоды когда происходили изменения
  2. По каждому из них производил выборку участвующих линий.
  3. Строил на основе линий полигональные объекты и формировал слои.

NextGIS Toolbox — это средство автоматизации обработки геоданных, о его возможностях можно прочитать в специальной статье.

Хранение данных

Задача: Удобная загрузка и обновление данных временных срезов, отдача в формате векторных тайлов.

Созданные процессингом данные временных срезов проверялись и загружались с помощью NextGIS Connect в NextGIS Web — серверную Веб ГИС, предназначенную для хранения и организации многопользовательского доступа к геоданным.

Результирующие временные срезы в среднем «весили» по 50 Мб каждый, и такие объемы конечно нельзя было передавать на фронтенд, так как загрузка страницы в браузере занимала бы слишком много времени. Растровая модель плохо подходила из-за требований к интерактивности результирующей карты: полигоны должны быть “нажимабельными”. Поэтому в качестве технологии передачи данных были выбраны векторные тайлы. NextGIS Web может выступать в качестве сервера “векторных тайлов”, генерируя их на основе векторных слоёв и разрешая обращаться к ним стандартным образом:

http://gis.runivers.ru/api/resource/5455/2/0/1.mvt

Хранилище временных срезов в интерфейсе NextGIS Web
Хранилище временных срезов в интерфейсе NextGIS Web

Клиентское приложение (front-end)

Задача: Быстрая визуализация на полноценной картооснове с возможностью анимации, не блокирующей навигацию.

Сервера и сервисы — это очень интересно, но конечный пользователь будет работать с этой информацией через клиентское приложение (Веб-карту). Вот что оно должно уметь:

  1. Загружать метаинформацию о временных срезах.
  2. Загружать и отображать таблицы с сопроводительной информацией – данными о правителях и изменениях в территории.
  3. Загружать сами данные и плавно переключать слои при изменении текущего года. Избегать миганий.
  4. Реализовывать режим анимации с сохранением возможности осуществлять навигацию по карте.

Приложение построено на NextGIS Frontend — специальном наборе библиотек, облегчающем разработку картографических приложений. NextGIS Frontend даёт возможность подключать различные картографические фреймворки через свои адаптеры: Mapbox GL JS, Leaflet, OpenLayers, но в проекте “Границы России” использовался только Mapbox GL JS.

Везде где это было возможно, мы использовали наши новые библиотеки: для инициализации карты, добавления слоёв и контролов (модуль webmap c адаптером mapboxgl-map-adapter); управления слоями-подложками (qms-kit для работы с QuickMapServices); загрузки ресурсов NextGIS Web через ngw-connector. Но использование библиотек не лишает возможности работать с самим картографическим фреймворком, и на примере проекта можно увидеть, что часть работы выполнена через интерфейс NextGIS Frontend, а часть — за счет стандартных методов Mapbox Gl JS.

Исходный код приложения доступен на Github.

Итоговое картографическое веб-приложение
Итоговое картографическое веб-приложение

Компания NextGIS занимается разработкой картографических проектов и поставляет ПО для самостоятельной разработки. Напишите нам, мы будем рады сотрудничеству!

16 комментария: Границы России и предшественников, 850 – 2020