noaa-sat-cli
Earth observation CLI with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface
- Commits
- 2
- Files
- 13
- Size
- 83.5 KB
- Langs
- 3
- Created
- Jun 8, 2025
- Last push
- over 1 year ago
NOAA Satellite CLI
Earth observation command-line interface with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface.
██████╗ ███████╗ ███████╗
██╔═══██╗██╔════╝ ██╔═══██╗
████████║██████╗ ████████║
██╔═════╝██╔═══╝ ██╔═══██║
╚███████╗███████╗ ╚██████╔╝
╚══════╝╚══════╝ ╚═════╝
EARTH OBSERVATION CLI
Features
- Real-time NOAA GOES satellite imagery (GOES18/19)
- Hash-based deduplication archival system
- Multiple data sources: NOAA, NASA EPIC, NASA MODIS/VIIRS
- Cyberpunk ASCII terminal interface
- Quick one-liner commands for rapid workflow
- Automated cron-based archiving
- Multiple resolutions up to 470MP (21696x21696)
Quick Start
# Install dependencies
npm install
# Launch interactive terminal interface
npm run tui
# Quick commands
npm run quick grab # Capture latest image
npm run quick grab-max # Capture at max resolution (470MP)
npm run quick status # Show archive status
npm run quick help # Show all commands
Data Sources
NOAA GOES Satellites
- GOES18: Active geostationary satellite over Pacific
- GOES19: Active geostationary satellite over Atlantic
- Channels: GEOCOLOR, ABI-L2-MCMIPC, Sandwich, Day Cloud Phase Distinction, Air Mass, Fire Temperature
- Resolutions: 1808x1808 (3MP), 5424x5424 (29MP), 10848x10848 (118MP), 21696x21696 (470MP)
NASA EPIC
- Deep space Earth view from DSCOVR satellite at L1 Lagrange point (1.5M km from Earth)
- Natural and enhanced color imagery
- Full disk Earth view updated ~daily
NASA MODIS/VIIRS
- Terra/Aqua MODIS imagery
- Suomi NPP VIIRS imagery
- Regional downloads for USA, Europe, Asia, Africa, Australia
- True color and specialized band combinations
Architecture
Archive System
- Hash-based deduplication: MD5 hashing prevents duplicate storage
- JSON metadata database: Tracks all captured images with timestamps, satellites, channels
- Automatic organization: Images stored with descriptive filenames
- Size tracking: Monitor total archive size and image counts
Timestamp Parsing
Fixed NOAA timestamp parsing to handle Julian day format (YYYYJJJHHMM) instead of standard dates.
Error Handling
- Robust error handling for network timeouts
- Graceful degradation when satellites are offline
- Clear ASCII status indicators: [OK], [ERR], [*], [>>]
CLI Usage
Archive Commands
npm run archive capture # Capture latest GOES18 GEOCOLOR
npm run archive capture-all # Capture all satellites/channels
npm run archive status # Show archive statistics
npm run archive recent # List recent captures
EPIC Commands
npm run epic latest # Download latest EPIC image
npm run epic download-all # Download all available images
npm run epic info # Show image metadata
NASA Earth Observation
npm run nasa download usa # Download US regional image
npm run nasa download europe 2024-01-15 # Download Europe for specific date
npm run nasa regions # List available regions
Interactive TUI
npm run tui # Launch cyberpunk terminal interface
Automated Archiving
Set up automated hourly captures with cron:
# Make script executable
chmod +x cron-archive.sh
# Add to crontab for hourly captures
crontab -e
# Add this line:
0 * * * * /path/to/noaa-sat-cli/cron-archive.sh
Project Structure
src/
├── api.ts # Core NOAA API with fixed Julian day parsing
├── archive.ts # Hash-based archival system
├── tui.ts # Cyberpunk terminal interface
├── quick.ts # One-liner quick commands
├── epic.ts # NASA EPIC deep space imagery
├── nasa-eo.ts # NASA MODIS/VIIRS regional imagery
└── index.ts # Main CLI entry point
cron-archive.sh # Automated capture script
Configuration
Environment Variables
ARCHIVE_DIR: Custom archive directory (default:./archive)LOG_LEVEL: Logging verbosity (default:info)
Resolution Options
1808x1808: 3MP - Fast downloads, good for timelapses5424x5424: 29MP - Standard quality, balanced size/detail10848x10848: 118MP - High quality, larger files21696x21696: 470MP - Maximum quality, very large files
Technical Notes
GOES Satellite Status
- GOES16: Offline (2024)
- GOES18: Active over Pacific Ocean
- GOES19: Active over Atlantic Ocean
NASA GIBS Processing Delay
NASA GIBS requires a 2-day offset from current date due to processing time.
Deduplication Algorithm
Uses MD5 hashing to identify duplicate images and avoid storing identical captures, essential for automated archiving.
Cyberpunk Aesthetic
All interfaces use ASCII art and ANSI colors with a "unicode cyberpunk ASCII 90s" aesthetic:
- No emoji, only ASCII indicators
- Cyberpunk color scheme (cyan, magenta, green, red)
- ASCII art banners and status displays
- Terminal-native interface design
License
MIT License - See LICENSE file for details
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with
npm run tuiandnpm run quick - Submit a pull request
Earth observation for the cyberpunk generation.