Хостинг OpenStreetMap самостоятельно

OpenStreetMap (OSM) — это бесплатная карта мира, созданная совместно людьми по всему миру — свободная, открытая и независимая. В то время как Google Maps, как лидер рынка, часто является первым выбором для цифровых карт, OSM опирается на совершенно другой принцип: совместное сообщество, которое собирает, улучшает и делает географические данные доступными бесплатно.


Почему это важно? Потому что карты — это знания, а знания должны быть бесплатными. Для отдельных приложений может быть полезно самостоятельно размещать данные OSM, чтобы разрабатывать индивидуальные картографические решения и сохранять контроль над данными и их представлением. Самостоятельное размещение OSM дает ряд преимуществ:

  • Независимость: Вы не зависите от внешних сервисов и имеете полный контроль над данными карты.
  • Адаптивность: Вы можете настроить стиль карты и отображаемые данные в соответствии со своими потребностями.
  • Защита данных: Все данные хранятся локально. Внешние API не вызываются.

Существует два основных метода отображения карт.:

  • Сетка плитки: Готовые файлы изображений для разных уровней масштабирования. Их легко реализовать, но они менее гибки в настройке стиля карты.
  • Векторные плитки: Содержит географические данные в виде векторов (точек, линий, полигонов), которые визуализируются на стороне клиента. Это позволяет гибко настраивать дизайн карты и обеспечивать четкое отображение на всех уровнях масштабирования. Однако для рендеринга требуется больше вычислительной мощности на клиентском устройстве.

Векторные плитки особенно подходят для самостоятельного размещения, поскольку они предлагают больше возможностей настройки и более эффективны. Для региональных карт с меньшими площадями часто достаточно ~1 ГБ места на жестком диске. Использование SSD-накопителей имеет смысл, поскольку они обеспечивают преимущество в скорости загрузки плиток. Статические векторные плитки не требуют работающего картографического сервера (например, TileServer GL или Mapnik), требуют меньшего обслуживания и создают меньшую нагрузку на сервер — они идеально подходят для небольших проектов с фиксированными разделами карты.

Мой маленький пакет osmhelper облегчает процесс создания и развертывания векторных плиток из .osm.pbfФайлы. Пользовательские ограничивающие рамки позволяют разработчикам извлекать определенные географические области и генерировать соответствующие шаблонные файлы, которые можно загружать непосредственно на сервер. Это значительно упрощает интеграцию данных OSM в веб-проекты. Для использования osmhelper необходима некоторая подготовка. Библиотека основана на таких инструментах, как осмий, мбутил а также плиточник который должен быть установлен.

Установка осмия

osmium — мощный инструмент для обработки данных OSM.

mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version

Установка mbutil

mbutil — это инструмент на основе Python для работы с MBTiles.

git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version

Установка плиточника

tilemaker — это инструмент с открытым исходным кодом, который преобразует данные OSM непосредственно в векторные плитки.

apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help

Загрузить скрипт конверсии

mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh

Использование osmhelper

После установки необходимых инструментов можно использовать osmhelper для генерации векторных плиток и подготовки их к размещению.:

./convert.sh \
    --url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
    --lat-min 47.27 \
    --lon-min 8.97 \
    --lat-max 50.57 \
    --lon-max 13.84 \
    --compress

Этот процесс позволяет эффективно доставлять индивидуальные разделы карты без необходимости использования динамического картографического сервера. Интеграция данных OpenStreetMap в ваши собственные проекты может оказаться сложной задачей, особенно когда речь идет о хостинге и развертывании. Поскольку Google Maps имеет монополию на картографические решения, многие разработчики ищут альтернативы. osmhelper упрощает начало работы по размещению собственных данных OpenStreetMap. Это дает вам полный контроль над вашими картами, отсутствие ограничений API и возможность добавлять собственные слои данных.

Большинству людей Google Maps известен как стандартное решение для цифровых карт. Но мало кто знает, что OpenStreetMap — это прекрасная альтернатива, не имеющая никаких коммерческих ограничений или скрытых затрат. В то время как Google Maps взимает плату за использование API и собирает данные пользователей, OSM является бесплатным, открытым и поддерживается мировым сообществом. OSM — это Википедия картографического мира: любой желающий может внести свой вклад, добавить дороги, туристические маршруты или POI (точки интереса) и таким образом улучшить бесплатную карту мира.

Назад