Skip to main content

phase2-quick-reference

Phase 2 Quick Reference Guide​

Quick overview of Phase 2 advanced planning features implementation.

What's Included​

Phase 2 adds three advanced planning features:

1. Road Elevation & Grades​

  • Calculate steepness of road sections
  • Identify caravan-challenging grades
  • Warn about steep climbs ahead
  • Use DEM data from Geoscience Australia

2. Weather Forecasts & Warnings​

  • 7-day weather forecasts
  • Severe weather warnings
  • Road impact assessments
  • Data from Bureau of Meteorology

3. Mobile Coverage Maps​

  • Coverage by carrier (Telstra, Optus, Vodafone, TPG)
  • Network type (3G, 4G, 5G)
  • Identify coverage gaps on routes
  • Data from ACCC

Database Tables​

road_elevations         - Elevation and grade data for road segments
weather_forecasts - Cached 7-day forecasts for major locations
weather_warnings - Active severe weather warnings
mobile_coverage - Coverage maps by carrier and network type
elevation_tiles - DEM tile processing tracker

Quick Start​

1. Run Database Migrations​

Via Supabase SQL Editor:

  1. Open: https://app.supabase.com/project/_/sql
  2. Copy and run: supabase/migrations/0008_create_phase2_tables.sql
  3. Copy and run: supabase/migrations/0009_create_phase2_helper_functions.sql

Or via CLI:

cd packages/database
npx supabase db push

2. Run Scripts​

Weather Polling (Sample Data)​

npm run db:poll-weather

Mobile Coverage Import​

# Download KML files from data.gov.au first
npm run db:import-coverage -- ~/Downloads/coverage/

Elevation Processing​

# Note: Requires additional implementation
npm run db:process-elevation -- --state NSW --resolution 30

Mobile App Usage​

Check Steep Grades​

const { data } = await supabase.rpc('steep_grades_near_point', {
lat: -33.8688,
lon: 151.2093,
radius_meters: 50000,
min_grade_percent: 8.0
});

// Show warnings for steep sections
data?.forEach(grade => {
if (grade.grade_category === 'very_steep') {
alert(`⚠️ Very steep section ahead: ${grade.max_grade_percent}% grade`);
}
});

Check Weather​

const { data } = await supabase.rpc('weather_forecast_near_point', {
lat: -33.8688,
lon: 151.2093,
radius_meters: 100000,
days_ahead: 7
});

// Show weather warnings
data?.forEach(day => {
if (day.has_severe_weather_warning) {
alert(`⚠️ ${day.warning_type}: ${day.warning_description}`);
}
});

Check Coverage​

const { data } = await supabase.rpc('mobile_coverage_at_point', {
lat: -33.8688,
lon: 151.2093,
carrier: 'telstra',
network_type: '4g'
});

if (!data || data.length === 0) {
alert('⚠️ No mobile coverage ahead for next 50km');
}

Route Summary​

const { data } = await supabase.rpc('route_conditions_summary', {
lat: -33.8688,
lon: 151.2093,
radius_meters: 100000
});

console.log(`Steep grades: ${data.steep_grades_count}`);
console.log(`Weather warnings: ${data.weather_warnings_count}`);
console.log(`4G coverage: ${data.has_4g_coverage ? 'Yes' : 'No'}`);

Helper Functions​

Elevation​

  • steep_grades_near_point(lat, lon, radius, min_grade) - Find steep sections
  • road_grades_along_route(route_points[], buffer) - Get grades along route

Weather​

  • weather_forecast_near_point(lat, lon, radius, days) - Get forecasts
  • weather_warnings_for_area(lat, lon, radius) - Get active warnings

Coverage​

  • mobile_coverage_at_point(lat, lon, carrier, network) - Check at point
  • mobile_coverage_gaps_along_route(route_geom, sample_distance, carrier, network) - Find gaps

Route Analysis​

  • route_conditions_summary(lat, lon, radius) - Comprehensive summary

Automation​

Weather Polling​

GitHub Actions (every 6 hours):

# .github/workflows/poll-weather.yml
on:
schedule:
- cron: '0 */6 * * *'

Cron:

0 */6 * * * cd /path/to/vanroute/packages/database && npm run db:poll-weather

Implementation Status​

✅ Complete​

  • Database schema
  • Helper functions
  • Script frameworks
  • Documentation

⚠️ Requires Production Implementation​

Elevation Data:

  • Implement WCS queries OR
  • Process local DEM tiles with GDAL
  • Sample elevation along road segments
  • Calculate grade percentages

Weather Data:

  • Connect to BOM FTP: ftp://ftp.bom.gov.au/anon/gen/
  • Parse XML forecast products
  • Subscribe to RSS warning feeds

Mobile Coverage:

  • Install KML parser: npm install @tmcw/togeojson
  • Download ACCC datasets
  • Parse KML coverage polygons

Data Sources​

Elevation​

Weather​

Coverage​

Grade Categories​

CategoryGrade RangeDescription
Flat0-3%Easy for all vehicles
Gentle3-6%No issues for caravans
Moderate6-10%Caution with heavy loads
Steep10-15%Challenging for caravans
Very Steep>15%Avoid with caravans

Weather Warning Levels​

SeverityDescriptionAction
AdviceBe awareMonitor conditions
WatchPrepareReview plans
WarningTake actionAlter plans
EmergencyAct nowAvoid area

Coverage Types​

TypeDescription
OutdoorGeneral outdoor coverage
IndoorIndoor coverage available
Ext AntennaRequires external antenna

Commands​

# Weather polling
npm run db:poll-weather

# Coverage import
npm run db:import-coverage -- /path/to/coverage/

# Elevation processing
npm run db:process-elevation -- --state NSW --resolution 30
npm run db:process-elevation -- --bounds -34,150,-33,151 --resolution 5

# Full Phase 2 setup
npm run db:setup-phase2

Production Checklist​

Phase 2 Implementation:

  • Run database migrations (0008, 0009)
  • Implement elevation data processing
  • Implement BOM weather parsing
  • Implement mobile coverage import
  • Set up weather polling automation
  • Test helper functions
  • Integrate with mobile app
  • Add UI components for warnings
  • Test with production data

Files Created​

Database​

  • supabase/migrations/0008_create_phase2_tables.sql
  • supabase/migrations/0009_create_phase2_helper_functions.sql

Scripts​

  • scripts/process-elevation-data.ts
  • scripts/poll-bom-weather.ts
  • scripts/import-mobile-coverage.ts

Documentation​

  • PHASE2.md - Complete implementation guide
  • PHASE2_QUICK_REFERENCE.md - This file

Support​


Status: ⚠️ Partial - Framework Complete, Production Integration Pending Last Updated: October 2025