Skip to main content

Intelligent Routing System

Introduction

VanRoute's intelligent routing system provides caravan and RV-safe routes across Australia by considering vehicle dimensions, road restrictions, elevation profiles, and user preferences. Unlike standard GPS navigation, our system actively avoids hazards like low bridges, steep grades, and narrow roads that could endanger caravans.

Key Features

1. Vehicle-Aware Routing

  • Height restrictions - Avoids bridges and overpasses below vehicle height
  • Weight limits - Respects road and bridge weight restrictions
  • Length constraints - Avoids tight turns unsuitable for long vehicles
  • Grade avoidance - Configurable maximum grade percentage

2. Intelligent Cost Calculation

Routes are scored based on multiple factors:

  • Base distance (shorter is better)
  • Grade penalties (steep hills cost more)
  • Restriction penalties (height/weight limits add cost)
  • Surface penalties (unsealed roads discouraged)
  • Traffic incident avoidance (live data integration)

3. Comprehensive Warnings

  • Low clearance bridges
  • Steep grades (>8%)
  • Weight restrictions
  • Narrow roads
  • Live traffic incidents

4. Suggested Stops

  • Fuel stations - Based on vehicle range and consumption
  • Rest areas - Every ~200km or 2 hours driving
  • Caravan facilities - Prioritizes stops with dump points, water, toilets

5. Elevation Profile

  • Complete elevation profile for route
  • Grade percentages for each segment
  • Total elevation gain/loss
  • Steep section identification

System Architecture

User Request

[Check Route Cache]
↓ (cache miss)
[Find Nearest Graph Nodes]

[Get Vehicle-Accessible Edges]

[Calculate Path with Costs]

[Analyze for Hazards]
├─→ Check restrictions
├─→ Check elevations
├─→ Check traffic
└─→ Generate warnings

[Suggest Stops]
├─→ Fuel (based on range)
└─→ Rest (every ~200km)

[Cache Result]

Return Route to User

Data Foundation

The routing system builds upon VanRoute's comprehensive database:

Road Network:

  • 4.3M route segments covering Australia
  • Complete geometry (lat/lon coordinates)
  • Road classifications (motorway, highway, local)
  • Surface types (paved, unsealed)

Restrictions:

  • Bridge height limits (NSW, VIC, QLD, TAS, ACT, WA)
  • Weight restrictions
  • Caravan-specific hazards
  • OSM validated data

Elevation Data:

  • 2.99M segments with elevation profiles (69% coverage)
  • SRTM 90m resolution data
  • Grade calculations
  • Categories (flat, gentle, moderate, steep, very_steep)

Services:

  • Fuel stations (loclie.com.au + OSM)
  • Rest areas with facilities
  • Caravan parks
  • Dump points

Live Data:

  • Traffic incidents
  • Road closures
  • Weather warnings

Implementation Status

✅ Completed

  • Database schema and migrations
  • Graph data structure (nodes + edges)
  • SQL helper functions
  • TypeScript routing service
  • Vehicle constraint filtering
  • Hazard analysis
  • Elevation integration
  • Route caching
  • Documentation

🚧 In Progress

  • Graph building (converting 4.3M segments)
  • pgRouting integration
  • Performance optimization

📋 Planned

  • Alternative route generation
  • Real-time traffic integration
  • AI agent natural language interface
  • Mobile app integration
  • Turn-by-turn navigation

Performance

Graph:

  • Nodes: ~8-10 million
  • Edges: ~4.3 million
  • Storage: ~2-3 GB

Route Calculation:

  • First request: 300-800ms
  • Cached: 50-100ms
  • Memory: 100-200MB per request

Coverage:

  • Road network: 100% (all Australia)
  • Elevation data: 69% (populated areas covered)
  • Restrictions: Major highways + state roads

Cost Factors

Routes are calculated using a weighted cost function:

cost = distance × penalty_multiplier

WHERE penalty_multiplier =
100000.0 if vehicle physically cannot pass (height/weight)
3.0 if grade > 12% (very steep)
2.0 if grade > 8% (steep)
1.8 if unsealed road (and avoiding unsealed)
1.5 if grade > 6% (moderate)
1.3 if height restriction present (caution)
0.9 if motorway (preferred)
1.0 default

This ensures:

  • Impossible routes are avoided (infinite cost)
  • Hazardous conditions add significant cost
  • Comfortable routes are preferred

User Experience

Route Request

const route = await routingService.calculateRoute({
origin: { lat: -33.8688, lon: 151.2093 }, // Sydney
destination: { lat: -37.8136, lon: 144.9631 }, // Melbourne
vehicleId: 'user-vehicle-uuid',
preferences: {
avoidUnsealedRoads: true,
maxGradePercent: 10,
},
});

Route Response

{
id: 'route-uuid',
distance_meters: 878000,
estimated_time_seconds: 31680, // ~8.8 hours
elevation_gain_meters: 2340,
max_grade_percent: 8.5,

warnings: [
{
type: 'steep_grade',
severity: 'warning',
message: 'Steep 8.5% grade on Alpine Way',
distanceFromStart: 520000,
}
],

fuelStops: [
{
name: 'Shell Goulburn',
distanceFromStart: 195000,
amenities: { hasToilets: true, hasFood: true }
},
{
name: 'BP Albury',
distanceFromStart: 540000,
amenities: { hasToilets: true, hasTruckAccess: true }
}
],

restStops: [
{
name: 'Gundagai Rest Area',
distanceFromStart: 385000,
facilities: { hasToilets: true, hasWater: true, hasDumpPoint: true }
}
],

elevationProfile: [
{ distanceFromStart: 0, elevation: 12, grade: 0 },
{ distanceFromStart: 50000, elevation: 580, grade: 3.2 },
// ... more points
]
}

Integration Points

Mobile App

  • React Native map display
  • Turn-by-turn navigation
  • Warning alerts
  • Stop suggestions

Backend Services

  • Supabase database
  • PostGIS spatial queries
  • Real-time data feeds
  • User preferences

Future: AI Agents

  • Natural language route planning
  • Conversational hazard explanations
  • Personalized recommendations
  • Multi-day trip planning

Next Steps

  1. Complete graph building (~2-4 hours for 4.3M segments)
  2. Install pgRouting for production pathfinding
  3. Integrate with mobile app for user testing
  4. Optimize performance based on usage patterns
  5. Add alternative routes for user choice
  6. Implement AI layer for natural language interface

Documentation


Status: Core system complete, integration in progress Last Updated: October 2025