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 (точки интереса) и таким образом улучшить бесплатную карту мира.