How we calculate safe, efficient cycling routes across Victoria
This page documents our current production routing implementation running on GraphHopper 10.2. The algorithm has been deployed and refined based on real-world testing and feedback from the Victorian cycling community.
VicBUG uses a sophisticated dual-layer color-coding system that shows infrastructure quality at a glance. Routes dynamically change colors per-segment based on the actual bike infrastructure present.
Visual cues: Solid lines indicate higher protection, while dashed lines show minimal or intermittent infrastructure.
Highest safety level. Includes protected lanes with physical barriers, separated cycleways, and car-free paths.
GraphHopper tags: cycleway, separated, track, shared_path, sidepath
Good protection. Painted buffer zone provides separation between cyclists and motor vehicles.
GraphHopper tags: buffered_lane, lane_buffered
Moderate protection. Standard painted lanes without buffer. Dashed line indicates minimal physical separation.
GraphHopper tags: lane, designated, basic_lane
Minimal protection. Lanes shared with parking or buses. Dashed line indicates intermittent availability.
GraphHopper tags: shared_lane, share_busway, shared, shared_parking
No bike infrastructure. Quiet, low-traffic residential streets and service roads.
Road types: residential, service, tertiary, living
Use with caution. Arterial roads, state highways, and primary routes with heavy traffic.
Road types: primary, secondary, trunk, state road
Routes intelligently change colors based on infrastructure transitions. A single route might show green for a protected path, then switch to cyan for a buffered lane, then orange for a residential street - all automatically color-coded to show you exactly what type of infrastructure you'll encounter on each segment.
When bike infrastructure data is unavailable, routes fall back to road class-based coloring. This ensures all routes are color-coded for safety, even without infrastructure details.
Note: Infrastructure-based colors (above) take priority when available. These colors only apply to segments without bike infrastructure data.
Car-free paths, trails, shared trails, bridleways, singletracks
Residential, service, tertiary, living streets, unclassified roads
Pedestrian-only paths, generally not legal for cycling
Primary, secondary, trunk, motorway, state roads, steps - use with caution
VicBUG uses GraphHopper 10.2's standard bike routing profile, enhanced with custom infrastructure preferences to better prioritize protected bike lanes and separated paths across Victoria.
"Standard bike routing enhanced with infrastructure-aware preferences"
We use GraphHopper's proven bike routing as the foundation, then layer on custom multipliers that give preference to bike infrastructure. This balances safety with practical route lengths.
These multipliers are applied on top of GraphHopper's standard bike routing algorithm, which already considers factors like road type, speed limits, and surface quality.
All route segments are rendered with a sophisticated two-layer system for maximum clarity:
This dual-layer approach ensures routes are visible at all zoom levels while maintaining visual hierarchy through the solid/dashed pattern system.
GraphHopper Profile: bike |Custom Model: bike_custom.json
The routing engine respects one-way streets and access restrictions, preventing dangerous wrong-way routing on divided roads and busy streets.
GraphHopper's bike profile handles bike access rules to ensure routes are both legal and safe for cycling.
GraphHopper's bike routing avoids pedestrian-only paths and respects access restrictions, keeping routes legal and safe for cycling.
Routes respect Victorian cycling laws by prioritizing legal bike infrastructure over pedestrian paths, unless explicitly designated as shared.
GraphHopper's bike routing handles various surfaces (paved, gravel, dirt, unpaved) with appropriate speed adjustments, supporting Victoria's extensive rail trail network.
The routing engine works well for touring and adventure cycling on rail trails and mixed-surface routes across regional Victoria.
MMAP-based elevation data provides accurate route profiles showing climbs and descents, helping you plan for hills on your ride.
Elevation profiles are displayed in the route planner, showing total ascent/descent and the gradient profile throughout your journey.
Roads aren't uniform - a single street might have protected lanes on one section and no infrastructure on another. Our per-segment profiling analyzes infrastructure changes within individual roads:
This granular approach ensures routes don't just look at road names, but understand the actual riding experience on every segment - critical for accurate navigation in Victoria's mixed infrastructure network.
User preferences for elevation: avoid hills, prefer flat routes, or don't care. Balancing elevation gain with route distance.
Fine-tuning the weight multipliers for each infrastructure type based on real-world user feedback and GPS trace data.
Incorporating community-reported hazards, construction, and seasonal conditions into routing decisions to avoid problem areas.