Границы России и предшественников, 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”»

  1. CA:

    Я конечно понимаю, что тут позиция РФ преимущественно, но чего у вас Крым вдруг не спорная территория?

  2. freeExec:

    Я конечно понимаю, что «лаборатория геоинформатики» далёкие от цифровых карт ребята, но вы то что в лужу сели — где положенная атрибутика для подложки Спутника?

  3. someuser:

    Идея хорошая, реализация на троечку. UX никакущий: легенду цветов территорий пришлось искать, мизерные территории неудобно и запарно кликать, сделайте список на текущую дату с информацией. Добавьте прокрутку по стрелочкам, там еще кучу всего нужно доработать для удобного пользования. Это точно уровень РАН?

    • Никита Максимов:

      а список с какой информацией на текущую дату:

  4. Иван:

    Остров Карагинский так и не закрашен, также в 1991 г. один из эстонских островов остается окрашенным зеленым, а не серым

  5. Дмитрий:

    Где события Гражданской и Отечественной? Почему республики СССР отмечены как часть России, а не «зависимые территории»? Почему Крым не в статусе «спорный»?

    • Ольга:

      Как это почему республики СССР — не часть России? Потому что Союз всех Республик. Правда равноправного союза не было. Имелся Фонд развивающихся Республик, в который сдавали все, а брали 14. Все кроме России жировали, строили высокоточную промышленность и великолепные города (а не бедные российские хрущевки), дорого одевались и прочее. \\ пожалуй Россия от республик.. зависимая территория?? … как сказать тактично? кормила всех их точно через этот фонд и техно проектами
      *
      А Крым.. Почему \с кем спорный то? С кем? Со скифами? ну кроху татары там были. А так- всегда был русский

      • Ольга:

        прошу извинить «республики СССР — как часть России?»

  6. Сергей:

    какой то баг с островом Врангеля.

  7. ПАВЕЛ:

    Я конечно понимаю, что этот проект для рекламы ваших возможностей (а не потому что вы патриоты и желаете сделать добро школьникам и прочим интересующимся), для привлечения внимания к себе со стороны потенциальных партнёров и клиентов или просто для освоения бюджета… Но помимо мелких ошибок (и багов), Вы допускаете непростительные моменты фальсификации истории страны — период Русско-Американской Компании отражён с позиции США (внимательно изучите карты и документы освоения Сев.Америки при создании США) Российская Империя владела одним из Гавайских островов и в Сев.Америке имела всё Западное побережье вплоть до 35 Параллели вплоть до границы с Мексикой, а вглубь континента граница проходила по скалистым горам. Пусть со времён Ельцина наши архивы и подчищаются, Википедия нагло врёт о Русской Аляске (выдавая современные границы Аляски с Канадой за Русские непонятно с кем (вы мозг включите!)), это совершенно не значит, что надо потакать фальсификации истории страны. Про границу с Китаем я вообще молчу (в 1600-е года)… Вы в курсе, что Маньчжурия была наша (мы что зря КВЖД там строили), как и порт-Артур (ныне Люйшунькоу). И почему карта с 1400-го года? Какая у вас проблема начать с Рюрика и Вещего Олега — самого первого объединителя Руси в единое государство (от Моря до Моря), а дальше уже перепрыгивайте на 1462-й год. Моему разочарованию нет предела. Позорище…

    • Алексей:

      Я конечно понимаю, что все мы тут непатриоты и отрабатываем заказ заокеанских хозяев. Но Вы на самом деле полагаете, что порт-Артур России принадлежал как основная территория, а не был арендован? «Какая у вас проблема начать с Рюрика и Вещего Олега» — проблема, что мы не на диване лежим, а геометрии кропаем. Поэтому не так все быстро получается. А про единое государство Вещего Олега от Моря до Моря мне понравилось — Вы пошутили, я тоже посмеялся)))

  8. Olga:

    Огромное спасибо вам. Очень нужная тема. Всё просто и наглядно. Где вы были когда я в школе училась? Хотя бы сейчас сложить в единую картинку что мы есть!