A production-grade reference for engineers who turn messy GPS into reliable mobility data.
🌐 Live site: www.routematching.com
RouteMatching is a deep, practitioner-focused knowledge base for building fleet telematics and mobility data pipelines in Python. Every page moves from the real-world problem, through the maths and algorithms, to runnable code and the production hardening that only matters once you are pushing millions of GPS fixes a day. No fluff, no toy examples — just the techniques that survive tunnels, urban canyons, mixed fleets, and out-of-order data.
If you have ever watched a vehicle "teleport" across a river, seen a delivery stop split into three, or fought a map matcher that snapped a truck onto a footpath, this site is written for you.
The material is organised into four in-depth sections, each a full pipeline stage with supporting deep-dives:
Turn raw, noisy telemetry into trustworthy trajectories: Kalman filtering and adaptive tuning for mixed fleets, outlier removal (Hampel vs z-score), coordinate reference system mapping and UTM zone selection, multi-device timestamp synchronization, and tunnel-gap interpolation.
Convert continuous tracks into discrete, billable events: DBSCAN and HDBSCAN stop clustering, sliding-window variance stop detection, time-window dwell calculation across timezone shifts, geofence-intersection dwell, POI matching, and anomaly scoring for unexpected stops.
Project noisy tracks onto the road network: Hidden Markov Model map matching with Viterbi decoding, choosing between HMM, geometric snapping and Viterbi, speed profiling and harsh-braking detection, heading synchronization, transport-mode inference, and streaming map-matching pipelines over Kafka with exactly-once semantics.
Wire open-source engines into your pipeline: OSRM, Valhalla / Meili, and GraphHopper integration, a hard-nosed OSRM vs Valhalla vs GraphHopper decision guide, self-hosting with Docker, and rate-limit circuit breakers.
- Mobility & telematics engineers building ingestion, matching, and analytics pipelines
- Fleet & logistics platform developers who need accurate stops, dwell times, and ETAs
- Python GIS practitioners working with
geopandas,shapely,pyproj,scikit-learn,numpy, and friends - Anyone integrating OSRM, Valhalla, or GraphHopper at scale
- Depth over breadth. Each page is a complete treatment — problem framing, the algorithm, numerical-stability notes, copy-paste Python, failure modes, and a deployment checklist.
- Production-first. Signal loss, tunnel gaps, mixed sampling rates, out-of-order streams, coordinate-order gotchas, and memory footprint are treated as first-class concerns.
- Real code. Self-contained, runnable Python classes and functions with every parameter explained — not pseudocode.
- Hand-authored diagrams. Original, theme-aware SVG dataflow and decision diagrams on every major page.
- Eleventy (11ty) static site generator
- Markdown content with structured data (JSON-LD:
Article,BreadcrumbList,HowTo,FAQPage) - Hand-authored inline SVG diagrams; light/dark theme-aware CSS
- Offline-capable via a service worker (precache + stale-while-revalidate)
- Deployed on Cloudflare Workers (static assets)
npm install
npm run serve # local dev server with live reload (eleventy --serve)
npm run build # build the static site into _site/npm run deploy # build + wrangler deploy (Cloudflare Workers static assets)Configuration lives in wrangler.jsonc; the build output in _site/ is served as static assets.
Built for practitioners. Explore it all at www.routematching.com.