Skip to main content
TypeScript

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
README.md

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 timelapses
  • 5424x5424: 29MP - Standard quality, balanced size/detail
  • 10848x10848: 118MP - High quality, larger files
  • 21696x21696: 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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with npm run tui and npm run quick
  5. Submit a pull request

Earth observation for the cyberpunk generation.