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:
- Open:
https://app.supabase.com/project/_/sql - Copy and run:
supabase/migrations/0008_create_phase2_tables.sql - 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 sectionsroad_grades_along_route(route_points[], buffer)- Get grades along route
Weather
weather_forecast_near_point(lat, lon, radius, days)- Get forecastsweather_warnings_for_area(lat, lon, radius)- Get active warnings
Coverage
mobile_coverage_at_point(lat, lon, carrier, network)- Check at pointmobile_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
- ELVIS Portal: https://elevation.fsdf.org.au/
- GA WCS: https://services.ga.gov.au/
- Resolutions: 5m (LiDAR), 30m (SRTM), 90m (SRTM)
Weather
- BOM FTP: ftp://ftp.bom.gov.au/anon/gen/
- Data Feeds: http://www.bom.gov.au/catalogue/data-feeds.shtml
- Formats: XML, JSON, CAP
Coverage
- ACCC Portal: https://data.gov.au/data/dataset/accc-mobile-infrastructure-report-data-release
- Formats: KML, KMZ
- Update: Annual
Grade Categories
| Category | Grade Range | Description |
|---|---|---|
| Flat | 0-3% | Easy for all vehicles |
| Gentle | 3-6% | No issues for caravans |
| Moderate | 6-10% | Caution with heavy loads |
| Steep | 10-15% | Challenging for caravans |
| Very Steep | >15% | Avoid with caravans |
Weather Warning Levels
| Severity | Description | Action |
|---|---|---|
| Advice | Be aware | Monitor conditions |
| Watch | Prepare | Review plans |
| Warning | Take action | Alter plans |
| Emergency | Act now | Avoid area |
Coverage Types
| Type | Description |
|---|---|
| Outdoor | General outdoor coverage |
| Indoor | Indoor coverage available |
| Ext Antenna | Requires 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.sqlsupabase/migrations/0009_create_phase2_helper_functions.sql
Scripts
scripts/process-elevation-data.tsscripts/poll-bom-weather.tsscripts/import-mobile-coverage.ts
Documentation
PHASE2.md- Complete implementation guidePHASE2_QUICK_REFERENCE.md- This file
Support
- Full Guide:
PHASE2.md - Data Enrichment:
apps/docs/docs/database/data-enrichment.md - GitHub Issues: https://github.com/haydenfarquhar/vanroute/issues
Status: ⚠️ Partial - Framework Complete, Production Integration Pending Last Updated: October 2025