Розмістіть OpenStreetMap самостійно

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


Чому це важливо? Тому що карти – це знання, а знання мають бути безкоштовними. Для окремих програм може бути корисним самостійно розміщувати дані OSM, щоб розробляти індивідуальні рішення для карт і зберігати контроль над даними та їх поданням. Самостійне розміщення OSM пропонує декілька переваг:

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

Існує два основних способи відображення карт:

  • Сітка плитка: Попередньо створені файли зображень для різних рівнів масштабування. Їх легко реалізувати, але вони пропонують меншу гнучкість у налаштуванні стилю карти.
  • Векторні плитки: Містить географічні дані у формі векторів (точок, ліній, багатокутників), які відображаються на стороні клієнта. Це дозволяє гнучко налаштовувати дизайн карти та чітке відображення на всіх рівнях масштабування. Однак візуалізація вимагає більшої обчислювальної потужності на клієнтському пристрої.

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

Мій маленький пакет osmhelper полегшує процес створення та розгортання векторних плиток з .osm.pbfФайли. Спеціальні обмежувальні рамки дозволяють розробникам витягувати певні географічні області та генерувати відповідні шаблонні файли, які можна завантажити безпосередньо на сервер. Це значно полегшує інтеграцію даних OSM у веб-проекти. Щоб використовувати osmhelper, потрібна певна підготовка. Бібліотека заснована на таких інструментах, як осмій, mbutil і плиткар який необхідно встановити.

Монтаж осмію

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 як стандартне рішення для цифрових карт. Але мало хто знає, що OpenStreetMap — чудова альтернатива — без комерційних обмежень чи прихованих витрат. У той час як Google Maps стягує плату за використання API і збирає дані користувачів, OSM є безкоштовним, відкритим і підтримується світовою спільнотою. OSM — це Вікіпедія світу карт — будь-хто може внести свій внесок, додати дороги, туристичні стежки чи POI (визначні місця) і таким чином покращити безкоштовну карту світу.

Назад