Добрый день, я совсем недавно начал погружаться в картографию и хотел бы уточнить у специалистов, насколько правильное я выбрал решение поставленной задачи.
Задача: отобразить карту России с некоторыми точками (координаты точек определены заранее). Точки имеют разные состояния, состояние может меняться вследствие действий пользователя (при клике меняется размер/цвет) или вследствие обновления данных на бэкенд части приложения. Также точки группируются при пересечении и соответственно выходят из группы при зум+ и при отсутствии пересечения.
На карте России должны быть отображены основные географические объекты, названия населенных пунктов, рек, озер, можно без домов и названий улиц, также опытным путем было выяснено, что зум можно ограничить до 13-14.
Ах да, это приложение в продакшене не будет иметь доступа к интернету.
Решение: покопавшись в сети я нашел TileMill + OSM Bright + PostGIS.
Загружаем федеральные округа России с
geofabrik.deМержим *.pbf файлы утилитой osmium
Импортим смерженный файл в БД с помощью osm2pgsql
Конфигурируем и собираем OSM Bright
Поднимаем TileMill и с помощью слоев и CartoCSS редактируем карту, как того требует задание
Далее выделяем нужную нам область и экспортом ее из TileMill в формате *.mbtiles
С помощью утилиты mb-util распаковываем *.mbtiles в png изображения
Заливаем png файлы на сервер
На фронте используем библиотеку leafletjs с помощью которой и реализуем всю логику работы с точками на карте
Я попробовал весь этот алгоритм на 2 федеральных округах и понял, что это достаточно затратно по времени (импорт в базу, рендер, экспорт в mbtiles), но в целом это жизнеспособный план. Главный минус это в случае изменения требований в задаче, придется опять перерендеривать карту, а это медленный процесс. Отсюда несколько вопрос:
- Насколько правильный я выбрал путь для решения моей задачи?
- Может всё-таки лучше развернуть какой-то гис-сервер на бэкенде? Какой лучше развернуть сервер в таком случае? Можно ли использовать TileMill в виде сервера (при старте он поднимает свой сервер)?
- Возможно есть какие-то подводные камни о которых я не знаю?