shp-файлы в geojson-файлы с помощью инструмента ogr2ogr
2. Сконвертировать geojson-файлы в формат mbtiles через tippecanoe
3. Отрендерить основные osm.pbf данные в mbtiles с помощью tilemaker
4. Смёржить два mbtiles через tippecanoe
Возможен вариант подключения shp-файлов непосредственно в tilemaker, но для этого придётся изучить и модифицировать его конфиг на Lua, который занимается процессингом точек и полигонов. Из коробки, разумеется, ничего не работает, часть данных не отображается, требуется поправка на уровни масштабирования и прочее.
Вся процедура занимает минут 20 и частично автоматизирована. На выходе ожидаем примерно гигабайтный файл ukraine.mbtiles, который теперь нужно как-то отобразить в браузере.
Для этого готовим тайловый сервер, он будет резать всё на тайлы в реальном времени и порционно выдавать клиенту для рендеринга. После недолгих экспериментов я остановился на mbtileserver, потому что zero configuration и простое горизонтальное масштабирование.
Ну а чтобы отобразить тайлы в браузере с привычным look-and-feel, используем MapLibre, форк уже коммерческой Mapbox GL. Для работы ему нужна тема, которая описывает движку как именно отображать эти самые тайлы (шрифты, толщина линий, цвета и многое другое). В своём проекте я использую симпатичную, на мой вкус, OSM Bright.
Интересный факт, конфигурация темы не включает в себя нумерацию зданий, которую, как мне кажется, все хотят по-умолчанию. Также интересный факт, что иногда не понятно где зарыта собака — в процессинге или в рендеринге? Поэтому для анализа mbtiles приходится расчехлять полновесную QGIS.
Ну и на react-map-gl мы заканчиваем нашу цепочку преобразований сырых OSM-данных в красивые перелёты по карте в браузере.