Для создания векторных плиток удобно использовать стек программного обеспечения openmaptiles, так как он позволяет импортировать данные OSM в БД и подготовить их для дальнейшего использования, например в tileserver-gl. Но такой подход не позволяет изменить проекцию результирующей плитки. Так как OpenLayers умеет перепроецировать только растровые тайлы, то векторные тайлы должны быть подготовлены другим способом. Maptiler заявляют о том что могут готовить плитки в любой произвольной проекции, но как это сделать самостоятельно информации нет, поэтому был принят путь комбинированного подхода. Т.е. импортирование данных ОСМ производится по схеме openmaptiles через imposm, но трансформация и нарезка на плитки делается через t-rex, который понимает произвольные тайловые сетки и проекции.
В окружении должно быть установлено следующее ПО:
- Docker - инструмент контейнеризации программного обеспечений.
- T-rex - сервис для нарезки векторных плиток, может быть установлен через docker.
- Mbutil - утилита для импорта и экспорта векторных плиток в mbtiles(NoSQL DB). Используется для простоты переноса векторных плиток.
- openmaptiles - в директории находятся конфигурационные файлы из папки build. Так как исходные скрипты содержали триггеры обновления данных, то они были "вырезаны". Также отключена загрузка объектов карты для крупных масштабов.
- t-rex - в директории конфиг с описанием тайловой сетки для полярной системы координат.
- Клонируем репозиторий openmaptiles
git clone https://github.com/openmaptiles/openmaptiles
- Пересобираем скрипты
make
- Создаем контейнер с чистым PG
make start-db
- Заменяем скрипты в директории build на файлы из openmaptiles этого репозиторий.
- Импортируем данные naturalearthdata
make import-data
- Импортируем данные ОСМ. Для этого в папке data должен быть актуальный pbf
make import-osm
- Импортируем данные wikidata
make import-wikidata
- Запускаем постобработку данных
make import-sql
- Запускаем анализ таблиц PG
make analyze-db
- Запускаем генерацию векторных плиток в полярной проекции
t_rex generate -c ./t-rex/3576.toml --maxzoom 14 --minzoom 0 --overwrite true --progress --tileset openmaptiles
Предварительно проверяем на каком порту запущен PG и правим строку подключения в ./t-rex/3576.toml - Импортируем данные в mbtiles
mb-util /data/openmaptiles/mvtcache osm.mbtiles
- Переносим osm.mbtiles в директорию data для tileserver-gl.