>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Rust

Je eigen OpenStreetMap-kaartserver implementeren met Headway

World map image

Als je ooit je eigen kaartinfrastructuur hebt moeten opzetten, herinner je je waarschijnlijk de hoofdpijn. Eerst configureer je een tegelserver voor het renderen van de basiskaart, dan koppel je apart Nominatim of Pelias voor adreszoekopdrachten, dan deploy je Valhalla of OSRM voor routing, en bovenop dat alles probeer je het allemaal samen te binden met een webfrontend. Uiteindelijk verandert een simpele taak in een rommeltje van een dozijn niet-passende services en configuratiebestanden.

Ik kwam recent de Headway repository tegen, waarvan de auteurs dit probleem precies hebben geprobeerd op te lossen. Ze hebben een kant-en-klare kaartserver samengesteld als een enkele out-of-the-box stack die draait op OpenStreetMap-data.

Wat zit er in de doos

Het kernconcept van het project is eenvoudig: geef ontwikkelaars de mogelijkheid om met slechts een paar commando's een volledig uitgeruste kaartservice op te zetten, zonder componenten handmatig aan elkaar te hoeven plakken.

De stack bevat:

  • Basiskaart met een kant-en-klare webinterface voor browsers
  • Geocoder voor het zoeken naar adressen en points of interest (POI)
  • Routing engine
  • Set van kant-en-klare configuraties voor meer dan 200 populaire steden

Het project is geschreven in Rust en ontworpen voor self-hosting. Je kunt een OSM-extract nemen voor een specifieke buurt, metropool of heel het land en dit aan de build-scripts voeren.

Hoe routing en zoeken presteren

In de huidige fase handelt Headway de basisdingen af waar we dit soort services meestal voor gebruiken.

Ten eerste is er geocoding. De zoekbalk laat je straatnamen, huisnummers en etablissementen vinden binnen het geladen kaartfragment.

Ten tweede is er het berekenen van routes tussen twee punten. Drie primaire reismodi worden ondersteund:

  • Voetganger
  • Fiets
  • Auto

Routing voor openbaar vervoer is nog in ontwikkeling, dus verwacht nog geen metro- of busverbindingen.

Systeemvereisten en bouwnuances

Er zijn geen mirakelen: geospatiale dataverwerking stoot altijd tegen hardwarelimieten. De ontwikkelaars waarschuwen eerlijk over de honger van de stack in de documentatie.

Voor het genereren van werkende bestanden heb je een Linux- of macOS-machine (amd64-architectuur) nodig met minimaal 8 GB RAM. Als je besluit een groot gebied te bouwen, heb je aanzienlijk meer geheugen nodig. Tijdens de data-voorbereidingsfase verbruikt het project tijdelijk 50 tot 100 GB schijfruimte, dus controleer je vrije ruimte op de SSD vooraf.

Zodra compilatie en extractverwerking zijn afgerond, dalen de resourcevereisten aanzienlijk. Voor het draaien en serveren van queries voor een gemiddelde stad is ongeveer 4 GB RAM op de server nodig.

Waar dit van pas komt

Het deployen van zo'n stack heeft in verschillende duidelijke scenario's zin:

  1. Geïsoleerde omgevingen en air-gapped netwerken. Als een zakelijke applicatie draait in een gesloten perimeter zonder internettoegang, dekt Headway de behoefte aan externe kaarten.
  2. Lokale bezorg- en logistieke diensten. Wanneer je bedrijf beperkt is tot één stad of regio, heeft het geen zin om voor elke geocoding- en routing-aanvraag commerciële mapping-API's te betalen.
  3. Pet projects en prototypes. Snel starten op een lokale machine zonder API-sleutels te registreren bij services van derden.
  4. Privacyvereisten. Data over bewegingen en zoekopdrachten van gebruikers blijft strikt op je eigen server.

Is het de moeite waard om te proberen

Headway is uitgebracht onder de gratis Apache 2.0-licentie. Het project heeft een duidelijk doel en een helder concept: de last wegnemen van het opzetten van kaartservices.

Als je een lokale kaartserver nodig hebt voor een specifieke stad of regio, is dit een uitstekende kandidaat om te testen. Begin met een van de 200 kant-en-klare stadspresets om prestaties en bruikbaarheid van de interface te evalueren, en ga dan verder met het bouwen van je eigen OSM-extracts.

Gerelateerde projecten