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