Jak wdrożyć własny serwer map OpenStreetMap za pomocą Headway
Jeśli kiedykolwiek musiałeś skonfigurować własną infrastrukturę mapową, prawdopodobnie pamiętasz ten ból głowy. Najpierw konfigurujesz serwer kafelków do renderowania mapy bazowej, następnie osobno podłączasz Nominatim lub Pelias do wyszukiwania adresów, potem wdrażasz Valhalla lub OSRM do routingu, a na tym wszystkim próbujesz jeszcze spiąć to wszystko z frontendem webowym. W końcu proste zadanie zamienia się w chaos dziesięciu niezgranych usług i plików konfiguracyjnych.
Ostatnio natknąłem się na repozytorium Headway, którego autorzy próbowali rozwiązać dokładnie ten problem. Złożyli gotowy do użycia serwer map jako jeden kompleksowy stos out-of-the-box działający na danych OpenStreetMap.
Co znajdziesz w środku
Główna koncepcja projektu jest prosta: dać programistom możliwość uruchomienia w pełni funkcjonalnej usługi mapowej za pomocą zaledwie kilku poleceń, bez konieczności ręcznego sklejania komponentów.
Stos zawiera:
- Mapę bazową z gotowym do użycia interfejsem webowym dla przeglądarek
- Geokoder do wyszukiwania adresów i punktów zainteresowania (POI)
- Silnik routingu
- Zestaw gotowych konfiguracji dla ponad 200 popularnych miast
Projekt jest napisany w Rust i zaprojektowany do samodzielnego hostowania. Możesz wziąć ekstrakt OSM dla konkretnej dzielnicy, metropolii lub całego kraju i przekazać go do skryptów budowania.
Jak sprawuje się routing i wyszukiwanie
Na obecnym etapie Headway obsługuje podstawowe rzeczy, dla których zwykle uruchamiamy te usługi.
Po pierwsze, jest geokodowanie. Pasek wyszukiwania pozwala znajdować nazwy ulic, numery budynków i establishments w załadowanym fragmencie mapy.
Po drugie, jest obliczanie tras między dwoma punktami. Obsługiwane są trzy podstawowe tryby podróży:
- Pieszy
- Rower
- Samochód
Routing komunikacji miejskiej jest nadal w fazie rozwoju, więc nie oczekuj jeszcze połączeń metrem czy autobusem.
Wymagania systemowe i niuanse budowania
Nie ma cudów: przetwarzanie danych geoprzestrzennych zawsze natrafia na limity sprzętowe. Deweloperzy uczciwie ostrzegają o apetycie stosu w dokumentacji.
Generowanie działających plików wymaga maszyny z Linuxem lub macOS (architektura amd64) z co najmniej 8 GB RAM. Jeśli zdecydujesz się budować duży region, będziesz potrzebować znacznie więcej pamięci. Podczas fazy przygotowania danych projekt tymczasowo zużywa od 50 do 100 GB miejsca na dysku, więc sprawdź wolne miejsce na SSD wcześniej.
Po zakończeniu kompilacji i przetwarzania ekstraktów wymagania dotyczące zasobów wyraźnie spadają. Uruchomienie i obsługa zapytań dla średniego miasta potrzebuje około 4 GB RAM na serwerze.
Gdzie to się przyda
Wdrożenie takiego stosu ma sens w kilku oczywistych scenariuszach:
- Izolowane środowiska i sieci air-gapped. Jeśli korporacyjna aplikacja działa w zamkniętym obwodzie bez dostępu do internetu, Headway pokrywa potrzebę zewnętrznych map.
- Lokalne usługi dostawcze i logistyczne. Gdy twoja firma ogranicza się do jednego miasta lub regionu, nie ma sensu płacić za komercyjne API mapowe za każde żądanie geokodowania i routingu.
- Projekty hobbystyczne i prototypy. Szybki start na lokalnej maszynie bez rejestrowania kluczy API w usługach stron trzecich.
- Wymagania dotyczące prywatności. Dane o ruchach użytkowników i zapytaniach wyszukiwania pozostają ściśle na twoim serwerze.
Czy warto spróbować
Headway jest wydany na wolnej licencji Apache 2.0. Projekt ma jasny cel i czystą koncepcję: usunąć uciążliwość konfigurowania usług geograficznych.
Jeśli potrzebujesz lokalnego serwera map dla konkretnego miasta lub regionu, to doskonały kandydat do przetestowania. Zacznij od jednego z 200 gotowych presetów miast, aby ocenić wydajność i użyteczność interfejsu, a następnie przejdź do budowania własnych ekstraktów OSM.
Powiązane projekty