Thermal IR Band 7: brightness temperature and hotspots
A foundational layer for any modern thermal-detection pipeline. 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.
When Kīlauea erupted in 2018 and lava flowed through Leilani Estates, scientists watched it from space. Which satellite, and how?
The answer is GOES-18 Band 7 (mid-wave infrared) and several other thermal sensors. The same band region that LaunchDetect uses to spot rocket plumes also tracks lava flows. This week you'll learn the math — the same Planck inversion the Hawaiʻi Volcano Observatory uses.
Learning objectives
- Convert raw ABI Band 7 radiance to brightness temperature in Kelvin
- Identify a rocket plume's thermal signature in Band 7
- Set a brightness-temperature threshold for hotspot detection
- Distinguish a real plume from a wildfire from a hot industrial source
Try it: brightness temperature + Planck curves
This is the math at the foundation of every thermal-hotspot detector. Move the radiance slider and watch the brightness temperature change — same Planck inversion used on every NOAA GOES Band 7 frame. The chart below plots Planck emission curves: notice why Band 7 (3.9 µm, the red dashed line) gives maximum contrast between Earth backgrounds and rocket plumes.
Primer
This is the foundational thermal-detection layer that every modern launch-detection and wildfire-detection system builds on, 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 public input and the same first-principles physics that any operator (LaunchDetect, NOAA HMS, NASA FIRMS, JMA) starts from before they layer their own discrimination, scoring, and gating logic on top.
Band 7 and the Planck function
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
Typical brightness temperatures
- Open ocean: ~290 K (16°C effective) — Band 7 is sensitive to skin temperature, which differs from bulk SST.
- Land surfaces: 280–320 K depending on time of day, season, and surface type.
- Clouds: highly variable, often 220–270 K (cold) or 280–290 K (low warm clouds).
- Wildfires: 320–500 K in actively burning pixels.
- Rocket plumes: typically 340–400 K at GOES Band 7 spatial resolution. The actual plume temperature is 1,500–3,000 K, but the plume only fills a small fraction of the 2 km × 2 km pixel, so the area-weighted brightness temperature is much lower.
The threshold approach
The simplest detector: threshold the brightness temperature. If Tb > threshold, flag the pixel as a hotspot. Sensible thresholds:
- 320 K: aggressive — catches all plumes but also many false positives (wildfires, gas flares, industrial sources).
- 340 K: balanced — good plume recall, fewer false positives.
- 360 K: conservative — very few false positives, but misses smaller plumes (small launchers like Electron).
In a real production system, a static brightness-temperature threshold is almost never the whole story. Operational detectors combine spectral evidence (this week's signal) with spatial context, temporal context, and external priors — the exact combination is where each operator differentiates and is mostly out of scope for an open curriculum. The point of this week is the spectral baseline. The higher-order logic — what features you stack on top, in what order, with what gating — is what Track 4 and Track 5 prepare you to design.
Common false positives
The single biggest source of false positives is wildfires. Both produce hotspots in Band 7. The discriminators:
- Spatial coincidence — a thermal hotspot inside a known spaceport's geofence is almost certainly a launch; outside, it's almost certainly a fire.
- Temporal pattern — a launch plume appears for 1–3 minutes then disappears; a wildfire persists for hours.
- FIRMS overlap — NASA's FIRMS (Fire Information for Resource Management System) publishes confirmed fire hotspots in near-real-time. A Band 7 hotspot that overlaps a FIRMS detection is almost certainly a fire.
Other false positives: industrial gas flares (Iraqi/Saudi oil fields), reflective sun glint over water, and rarely volcanic eruptions.
The lab
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.
Connecting to Hawaiʻi: Band 7, lava flows, and rocket plumes
GOES Band 7 at 3.9 µm is sensitive to anything hot. When Kīlauea's lower East Rift Zone opened in May 2018, the Hawaiian Volcano Observatory used GOES-18 thermal imagery (along with MODIS, VIIRS, and ASTER) to track the lava flow in near-real time. Lava at 1,000+ K, rocket plumes at 1,500–3,000 K, wildfire fronts at 500–800 K — Band 7 catches them all. The brightness-temperature math you write this week is the exact same math HVO uses. The threshold is different (HVO cares about >800 K for active lava), the source is different — but the physics is one.
Before you ship this
This week's lab gives you a working hotspot detector against real geostationary imagery. That capability is dual-use by nature: the same threshold + georeferenced output that fires an emergency-response alert also writes an activity log that an adversary could read. The math is one; the consequences depend on who's holding it and what they do next. Week 28 (Privacy + ethics) is the systematic treatment — MGRS, ITAR, indigenous data sovereignty, dual-use risk. Read it before you publish a public endpoint built on this week's code. The general principle: ship the detector for internal use first, prove out the false-positive profile, then decide what (if anything) goes to a public API and under what guardrails.
Hands-on lab: Detect a real launch plume in GOES-18 Band 7
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.
Quiz — click an answer to check it
No grade, no shame. Tap any option; you'll see if it's right plus the answer if not. The point is to notice what you already know and what's still settling.
- 3.9 µm (mid-wave IR)
- 10.3 µm (long-wave IR)
- 0.64 µm (red)
- 1.38 µm (water vapor)
- A cold spot
- A hotspot
- Invisible
- Striped
- ~150 K
- ~290 K
- ~400 K
- ~1000 K
- It's intuitive (Kelvin) and threshold-comparable across scenes
- It looks better
- It's required by law
- Radiance can't be measured
- Wildfires, gas flares, industrial sources, sun glint
- Only clouds
- Only ocean
- Only night
Reflection
Take five minutes with this. Write your answer somewhere. Carry it into next week.