How guilherme15990/cycling-router-engine works
This is an offline cycling route-planning engine. The principal workflow accepts a planning request, prepares and snaps a route graph, searches for Pareto-optimal candidates, then evaluates and classifies routes before returning route data. The architecture also includes OSM/elevation ingestion, profile-based ranking, physiological and effort prediction, and CLI/API entry points. Edges are limited to relationships visible in excerpts, the source index, or README; unsampled implementation details are not assumed.
Main entry points: planning.py Route orchestration · assessment.py Route assessment · astar.py Pareto search · parser.py CLI
Components 21
Interfaces
- CLI
src/router/interfaces/cli/parser.py - Python API
src/router/interfaces/api.py
Offline map data
- OSM ingestion
src/router/app/tooling/ingest.py - Elevation sources
src/router/app/tooling/elevation.py - Graph operations
src/router/app/tooling/graph.py
Route planning
- Offline planning entry
src/router/app/tooling/planning.py - Route orchestration
src/router/app/planning.py - Pareto search
src/router/core/search/astar.py - Profile ranking
src/router/core/search/pipeline.py - Approximate traversal
src/router/core/search/approximate.py
Physics and assessment
- Physical simulation
src/router/core/physics/traversal.py - Physics results
src/router/core/physics/models.py - Route assessment
src/router/core/evaluation/assessment.py - Route classification
src/router/core/evaluation/classification.py - Safety checks
src/router/core/evaluation/safety.py
Prediction and contracts
- Intensity estimate
src/router/core/prediction/intensity.py - Effort prediction
src/router/core/prediction/ml.py - Physiology contracts
src/router/core/physiology/prediction.py - Route contract
src/router/contracts/route.py - Prediction model store
src/router/core/prediction/model_store.py
Other components
- Cyclist
Connections 25
- Cyclist → CLI: submits request
- CLI → Offline planning entry: dispatches planning
src/router/interfaces/cli/parser.py - Python API → Route orchestration: calls facade
- Python API → Offline planning entry: uses integration
src/router/interfaces/api.py - Offline planning entry → Route orchestration: starts planning
- OSM ingestion → Graph operations: builds graph
- Elevation sources → Graph operations: adds elevation
- Route orchestration → Pareto search: requests candidates
src/router/app/planning.py - Route orchestration → Route assessment: assesses routes
src/router/app/planning.py - Route orchestration → Route classification: classifies routes
src/router/app/planning.py - Route orchestration → Safety checks: checks safety
src/router/app/planning.py - Route orchestration → Intensity estimate: estimates intensity
src/router/app/planning.py - Route orchestration → Route contract: returns route data
- Pareto search → Physical simulation: evaluates transitions
- Pareto search → Approximate traversal: may use estimate
src/router/core/search/approximate.py - Profile ranking → Pareto search: runs search
src/router/core/search/pipeline.py - Profile ranking → Route contract: selects route output
- Route assessment → Physical simulation: simulates route
src/router/core/evaluation/assessment.py - Route assessment → Effort prediction: predicts effort
src/router/core/evaluation/assessment.py - Route assessment → Intensity estimate: estimates intensity
src/router/core/evaluation/assessment.py - Physical simulation → Physics results: produces results
src/router/core/physics/traversal.py - Route classification → Route assessment: uses assessment
src/router/core/evaluation/classification.py - Effort prediction → Physiology contracts: uses physiology types
src/router/core/prediction/ml.py - Prediction model store → Effort prediction: loads predictors
- CLI → Graph operations: uses graph tools