The heart of LaunchDetect's methodology. Band 7 at 3.9 µm sees thermal emission strongly — rocket plumes show up as ~340 K hotspots against a background of ~290 K. This week you build a working hotspot detector.
This is the heart of LaunchDetect's methodology, taught from the ground up. By the end of this week you'll have a working thermal hotspot detector that operates on real NOAA GOES-18 NetCDF files — the same input, same physics, and same threshold logic that powers the production pipeline at launchdetect.com.
GOES-R ABI Band 7 is centered at 3.9 µm. The level-1b (calibrated radiance) data product reports radiance in mW/m²/sr/cm⁻¹. To turn radiance into something physically meaningful, you invert the Planck function:
T_b = (h * c / (k * λ)) / log((2 * h * c² / (λ⁵ * L)) + 1)
where L is radiance, λ is the band center wavelength, and h, c, k are Planck's constant, the speed of light, and Boltzmann's constant. The output is a temperature in Kelvin — the temperature a perfect black body would need to emit the observed radiance. This is the brightness temperature, Tb.
For GOES Band 7, NOAA helpfully publishes the Planck constants in each NetCDF file:
import xarray as xr
import numpy as np
ds = xr.open_dataset('OR_ABI-L1b-RadM1-M6C07_G18_*.nc')
Rad = ds.Rad.values # radiance, mW/m²/sr/cm⁻¹
# Constants from the NetCDF
fk1 = ds.planck_fk1.values
fk2 = ds.planck_fk2.values
bc1 = ds.planck_bc1.values
bc2 = ds.planck_bc2.values
Tb = (fk2 / np.log(fk1 / Rad + 1) - bc1) / bc2 # Kelvin
The simplest detector: threshold the brightness temperature. If Tb > threshold, flag the pixel as a hotspot. Sensible thresholds:
LaunchDetect's production threshold is set dynamically and combined with spatial coincidence with a known spaceport geofence + temporal pattern matching (a real plume grows then shrinks over 1–3 minutes; a wildfire stays hot for hours). That logic is Track 4 and Track 5.
The single biggest source of false positives is wildfires. Both produce hotspots in Band 7. The discriminators:
Other false positives: industrial gas flares (Iraqi/Saudi oil fields), reflective sun glint over water, and rarely volcanic eruptions.
You'll download several GOES-18 Band 7 frames spanning a known SpaceX Falcon 9 launch from Vandenberg, convert radiance to brightness temperature, threshold at 320 K, output the detected hotspot pixels with timestamps and lat/lon (via Week 15's georeferencing). The lab produces the same primary detection that drives a real launchdetect.com entry — without (yet) the parallax correction, clustering, or scoring layers.
Download GOES-18 Band 7 frames spanning a known SpaceX launch from Vandenberg. Convert to brightness temperature. Threshold at >320 K. Output detected hotspot pixels with timestamps and lat/lon.
Test yourself. Answer key on the certificate-track page (Gold-tier feature: progress tracking and auto-grading).