An open API service indexing awesome lists of open source software.

https://github.com/ejfox/noaa-sat-cli

Earth observation CLI with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface
https://github.com/ejfox/noaa-sat-cli

Last synced: 10 months ago
JSON representation

Earth observation CLI with real-time NOAA satellite imagery, archival system, and cyberpunk terminal interface

Awesome Lists containing this project

README

          

# 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

```bash
# 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
```bash
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
```bash
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
```bash
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
```bash
npm run tui # Launch cyberpunk terminal interface
```

## Automated Archiving

Set up automated hourly captures with cron:

```bash
# 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.*