OpenStreetMap (OSM) to darmowa mapa świata tworzona wspólnie przez ludzi z całego świata – darmowa, otwarta i niezależna. Podczas gdy Google Maps, jako lider rynku, jest często pierwszym wyborem w przypadku map cyfrowych, OSM opiera się na zupełnie innej zasadzie: społeczności współpracującej ze sobą, która zbiera, udoskonala i udostępnia dane geograficzne bezpłatnie.
Dlaczego to jest ważne? Ponieważ mapy to wiedza, a wiedza powinna być darmowa. W przypadku indywidualnych zastosowań przydatne może okazać się samodzielne hostowanie danych OSM w celu opracowywania niestandardowych rozwiązań mapowych oraz zachowania kontroli nad danymi i ich prezentacją. Samodzielne hostowanie OSM oferuje szereg zalet:
- Niezależność: Nie jesteś zależny od usług zewnętrznych i masz pełną kontrolę nad danymi karty.
- Zdolność adaptacji: Możesz dostosować styl mapy i wyświetlane dane do własnych potrzeb.
- Ochrona danych: Wszystkie dane są przechowywane lokalnie. Nie są wywoływane żadne zewnętrzne interfejsy API.
Istnieją dwie główne metody wyświetlania map:
- Płytki kratowe: Gotowe pliki graficzne dla różnych poziomów powiększenia. Są łatwe do wdrożenia, ale oferują mniejszą elastyczność w dostosowywaniu stylu mapy.
- Kafelki wektorowe: Zawiera dane geograficzne w formie wektorów (punktów, linii, wielokątów) renderowanych po stronie klienta. Dzięki temu możliwe jest elastyczne dostosowywanie wyglądu mapy i uzyskanie wyraźnego obrazu przy wszystkich poziomach powiększenia. Jednak renderowanie wymaga większej mocy obliczeniowej na urządzeniu klienckim.
Kafelki wektorowe są szczególnie przydatne do samodzielnego hostingu, ponieważ oferują więcej opcji dostosowywania i są bardziej wydajne. W przypadku map regionalnych obejmujących mniejsze obszary często wystarcza ok. 1 GB miejsca na dysku twardym. Użycie dysków SSD ma sens, ponieważ oferują one większą prędkość ładowania kafli. Statyczne kafelki wektorowe nie wymagają uruchomienia serwera map (np. TileServer GL lub Mapnik), mają mniejsze wymagania konserwacyjne i mniejsze obciążenie serwera — są idealne w przypadku mniejszych projektów ze stałymi sekcjami mapy.
Mój mały pakiet pomocnik ułatwia proces tworzenia i wdrażania kafelków wektorowych .osm.pbf
Akta. Niestandardowe pola ograniczające umożliwiają programistom wyodrębnianie określonych obszarów geograficznych i generowanie odpowiadających im plików szablonowych, które można przesłać bezpośrednio na serwer. Dzięki temu integracja danych OSM z projektami internetowymi jest znacznie łatwiejsza. Aby użyć osmhelper konieczne jest pewne przygotowanie. Biblioteka opiera się na narzędziach takich jak: osm, mbutyl oraz glazurnik który musi zostać zainstalowany.
Instalacja osmu
osmium to potężne narzędzie do przetwarzania danych 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
Instalacja mbutil
mbutil to narzędzie oparte na Pythonie, służące do pracy z 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
Montaż glazurnika
Tilemaker to narzędzie typu open source, które konwertuje dane OSM bezpośrednio na kafelki wektorowe.
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
Pobierz skrypt konwersji
mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh
Korzystanie z osmhelper
Po zainstalowaniu wymaganych narzędzi można użyć osmhelper do generowania kafelków wektorowych i przygotowania ich do hostowania:
./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
Proces ten umożliwia wydajne dostarczanie dostosowanych fragmentów mapy bez konieczności korzystania z dynamicznego serwera map. Integracja danych OpenStreetMap z własnymi projektami może być skomplikowana, zwłaszcza jeśli chodzi o hosting i wdrażanie. Ponieważ Google Maps ma monopol na rozwiązania kartograficzne, wielu deweloperów szuka alternatyw. Dzięki osmhelper łatwiej rozpoczniesz hostowanie własnych danych OpenStreetMap. Dzięki temu masz pełną kontrolę nad mapami, brak ograniczeń API i możliwość dodawania własnych warstw danych.
Większość osób uważa Mapy Google za standardowe rozwiązanie w zakresie map cyfrowych. Jednak niewiele osób wie, że OpenStreetMap to świetna alternatywa – bez ograniczeń komercyjnych i ukrytych kosztów. Podczas gdy Google Maps pobiera opłaty za korzystanie z interfejsu API i zbiera dane użytkowników, OSM jest bezpłatne, otwarte i wspierane przez globalną społeczność. OSM jest Wikipedią świata map – każdy może się do niej przyczynić, dodając drogi, szlaki turystyczne lub punkty POI (interesujące miejsca) i w ten sposób ulepszając darmową mapę świata.