Automated download of USGS 7.5-minute quadrangle maps for evacuation route planning.
This tool queries the USGS TNM Access API to download topographic maps covering your planned evacuation routes. It's designed to integrate with your Mobile Supply Organization Plan's requirement for paper maps covering a 50-mile radius from Huntsville.
# Install dependencies
pip install requests tqdm
# List available predefined routes
python usgs_quad_downloader.py --list-routes
# Download all predefined routes (US Topo current maps)
python usgs_quad_downloader.py --all
# Download a specific route
python usgs_quad_downloader.py --route primary_south
# Download historical maps for better trail/terrain detail
python usgs_quad_downloader.py --all --map-type historicalThe script includes five evacuation routes centered on Huntsville:
| Route Key | Description | Waypoints |
|---|---|---|
primary_south |
I-565 → I-65 → Birmingham | 5 |
primary_east |
US-72 → Scottsboro → Chattanooga | 4 |
secondary_north |
US-231 → Tennessee | 4 |
secondary_west |
US-72 → Florence/Muscle Shoals | 3 |
50_mile_radius |
Full 50-mile coverage from home | 5 |
--all Download all predefined routes
--route NAME Download specific route (primary_south, etc.)
--bbox "x1,y1,x2,y2" Custom bounding box (min_lon,min_lat,max_lon,max_lat)
--map-type TYPE current (US Topo) or historical (HTMC)
--format FORMAT GeoPDF (recommended) or GeoTIFF
--buffer MILES Buffer distance from route centerline (default: 5)
--output DIR Output directory (default: ./usgs_quads)
--list-routes List available predefined routes
- Modern GeoPDF format with layered data
- Includes orthoimagery, roads, contours, hydrography
- Updated regularly (typically annual refresh)
- Best for: Primary navigation and vehicle travel
- Scanned versions of classic USGS paper maps (1884-2006)
- Often show more trails, abandoned roads, and historical features
- Better terrain detail in many cases
- Best for: Backup set, on-foot navigation, trail finding
usgs_quads/
├── primary_route_south/
│ ├── manifest.json # Route metadata and product list
│ ├── AL_Huntsville_20230601.pdf
│ ├── AL_Madison_20230601.pdf
│ └── ...
├── primary_route_east/
│ └── ...
└── 50_mile_coverage_radius/
└── ...
- Print GeoPDFs at 100% scale on 11×17 paper at a print shop
- Laminate for durability (or use waterproof map cases)
- Mark evacuation routes with blue dry-erase marker
- Mark alternate routes in green
- Mark rally points as red circles
- Mark water sources as blue triangles
- Store primary set in BOB, duplicate in each vehicle
The downloaded GeoPDFs are georeferenced and can be imported into Avenza Maps for offline GPS-enabled navigation on your phone:
- Install Avenza Maps (iOS/Android)
- Import downloaded PDFs via file sharing
- Maps will show your GPS position overlaid
Automated Updates via CronJob:
# Add to K3s CronJob for quarterly refresh
0 0 1 */3 * cd /path/to/maps && python usgs_quad_downloader.py --allStorage in Longhorn: Store in a dedicated PVC for resilience and sync to off-site backup.
Home Assistant Automation: Trigger notification when new maps are downloaded.
Edit the ROUTES dictionary in usgs_quad_downloader.py:
ROUTES = {
"my_custom_route": {
"name": "Custom Route to Nashville",
"waypoints": [
(34.7304, -86.5861), # Start: Huntsville
(35.2226, -86.7816), # Waypoint: Fayetteville
(36.1627, -86.7816), # End: Nashville
],
},
}- Google Maps: Right-click → "What's here?"
- OpenStreetMap: Click location → coordinates in URL
- Format: (latitude, longitude) - note the order!
For the 50-mile radius around Huntsville, expect approximately 15-25 quad maps depending on exact coverage. Each 7.5-minute quad covers roughly:
- ~6-8 miles east-west
- ~6-9 miles north-south
- ~49-64 square miles
- Verify bounding box coordinates (lon,lat order for API)
- Check that the area has US Topo coverage
- Try historical maps as fallback
- USGS servers may be slow; increase timeout
- Retry failed downloads manually
- Check manifest.json for direct URLs
- The script includes respectful delays
- If blocked, wait and retry later
- Consider downloading routes over multiple sessions
This tool uses the TNM Access API:
- No API key required
- Products endpoint:
/api/v1/products - Supports bbox, dataset, and format filtering
Typical download sizes:
- US Topo GeoPDF: 15-40 MB per quad
- Historical GeoTIFF: 10-100 MB per quad
- Full 50-mile radius: ~500 MB - 1 GB total
- 1.0 (February 2026): Initial release
- TNM Access API integration
- Predefined Huntsville evacuation routes
- GeoPDF and GeoTIFF support
- Manifest generation for documentation