How to detect rocket launches from satellite imagery.
Rocket plumes are hot — combustion gases at 1,500 to 3,000 K. Earth's surface is around 290 K. That brightness-temperature contrast is the signal that lets a geostationary weather satellite, scanning at 30-second cadence, detect a launch within seconds of ignition. This is how the LaunchDetect platform does it, taught as a sequence of well-defined steps.
Step 1: Pick the right sensor
The sensor of choice for civilian launch detection is GOES-R ABI Band 7 at 3.9 micrometers — the mid-wave infrared band that gives maximum brightness-temperature contrast between hot combustion gases and the cool background.
The data is free, near-real-time, and published to NOAA's AWS Open Data bucket within seconds of generation. For global coverage you combine three satellites: GOES-East (75.2W), GOES-West (137.0W), and JMA Himawari-9 (140.7E).
Step 2: Convert radiance to brightness temperature
The raw ABI Band 7 product reports radiance. Invert the Planck function to get brightness temperature in Kelvin:
T_b = (h * c / (k * lambda)) / log((2 * h * c^2 / (lambda^5 * L)) + 1)The NOAA NetCDF helpfully publishes the necessary Planck constants in the file itself.
Step 3: Threshold-detect hotspots
Set a brightness-temperature threshold. Practical values:
- 320 K — aggressive: catches all plumes but produces false positives from wildfires and gas flares.
- 340 K — balanced.
- 360 K — conservative: misses small launchers (Electron, similar).
Detection is a per-pixel boolean test. Apply parallax correction immediately afterward.
Step 4: Parallax correction
The detected pixel coordinate is NOT the rocket's true ground position — the plume is at 30 to 80 km altitude, and from a satellite 35,786 km away at GEO, the line-of-sight to the plume hits the ground tens of kilometers offset from where the rocket actually is. The math is well-defined: the offset is along the line from the sub-satellite point to the apparent pixel, scaled by plume altitude / (plume altitude + Earth radius).
Step 5: False-positive filtering
The main false-positive sources are wildfires and industrial gas flares. The discriminators:
- Geofence — a hotspot inside a known spaceport's geofence is almost certainly a launch; outside it, almost certainly something else.
- Temporal pattern — a plume appears for 1 to 3 minutes then disappears; a wildfire persists for hours.
- FIRMS overlap — NASA's FIRMS publishes confirmed fire detections in near-real-time. Cross-reference and reject overlaps.
Step 6: Confidence scoring
Production-grade detection combines the above signals into a single confidence score per candidate. Inputs: spatial coincidence with a known spaceport (binary), temporal pattern match against expected plume duration (real-valued 0-1), brightness profile shape (real-valued 0-1), FIRMS overlap penalty (binary). A weighted sum or a small neural network produces the final score. LaunchDetect's production threshold is set to keep the false-positive rate below 5%.
From Hawaiʻi
GOES-18 (West, 137.0°W) is stationed almost directly south of Hawaiʻi. The same satellite watching Pacific hurricanes and Kīlauea lava flows is the one detecting rocket plumes on Band 7. If you're running the methodology described on this page from Hawaiʻi, you're closer to the data source than nearly anywhere on Earth. Hawaiian Volcano Observatory uses the same band region (mid-wave IR) to track lava eruptions in near-real time. The detector you'll build is structurally identical to their tooling.
Related weeks in the course
- Week 13: GOES-R ABI: full-disk, CONUS, mesoscale
- Week 14: Thermal IR Band 7: brightness temperature and hotspots
- Week 15: Georeferencing GOES and parallax (Capstone 3 week)
- Week 21: Multi-sensor fusion: GOES-East, GOES-West, Himawari-9
- Week 27: Production pipelines: S3 → Lambda → EventBridge → DDB