How jl115/valhalla works
Valhalla is an OpenStreetMap-based routing engine and network-analysis library. Its main request workflow accepts a route request, correlates locations to graph tiles, computes a path using mode- and time-dependent costs, builds maneuver guidance, and serializes a response. Separate capabilities include graph-tile construction, transit ingestion, matrix and isochrone analysis, elevation sampling, map matching, and tour optimization. The README documents the major module handoffs; sampled source excerpts are partial, so links for unsampled feature implementations are limited to documented ownership.
Main entry points: actor.cc Request API · worker.cc Path algorithms · graphtile.h Hierarchical graph tiles · graphbuilder.cc Graph builder
Components 19
Graph data
- Graph builder
src/mjolnir/graphbuilder.cc - Transit ingestion
src/mjolnir/ingest_transit.cc - Hierarchical graph tiles
valhalla/baldr/graphtile.h
Request handling
- HTTP service
src/valhalla_service.cc - Request API
src/tyr/actor.cc - Request parsing
src/worker.cc
Routing analysis
- Location search
src/loki/worker.cc - Dynamic costing
src/sif/dynamiccost.cc - Path algorithms
src/thor/worker.cc - Matrix analysis
src/thor/costmatrix.cc - Reachability
src/thor/isochrone.cc - Map matching
src/meili/map_matcher.cc - Elevation sampling
src/skadi/sample.cc - Tour optimization
src/thor/optimizer.cc
Guidance output
- Maneuvers
src/odin/worker.cc - Response formatting
src/tyr/serializers.cc
Other components
- OSM data
- Transit feeds
- API client
Connections 20
- OSM data → Graph builder: builds from
- Transit feeds → Transit ingestion: ingests
- Transit ingestion → Hierarchical graph tiles: adds transit
- Graph builder → Hierarchical graph tiles: writes tiles
- API client → HTTP service: sends request
- HTTP service → Request API: dispatches
- Request API → Request parsing: parses request
- Request API → Location search: correlates locations
- Location search → Hierarchical graph tiles: searches
- Request API → Path algorithms: requests analysis
- Path algorithms → Hierarchical graph tiles: reads graph
- Path algorithms → Dynamic costing: applies costs
- Path algorithms → Maneuvers: provides path
- Maneuvers → Response formatting: provides guidance
- Request API → Response formatting: formats response
- Request API → Matrix analysis: requests matrix
- Request API → Reachability: requests contours
- Request API → Map matching: requests matching
- Request API → Elevation sampling: requests sampling
- Request API → Tour optimization: requests optimization