Is a volcano throwing up ash that could ground flights near me?
Draw a rectangle, then check which collections cover it. Most NASA data is global, so a big box matches a lot.
-18.2, 28.4 → -17.7, 28.9 (La Palma, Canary Islands (Cumbre Vieja, 2021))When a volcano erupts, it injects tiny solid and liquid particles (ash and sulfate droplets, collectively called aerosol) high into the air. Jet engines and volcanic ash don't mix, so a big ash cloud can close airspace for days. The catch is that ash is genuinely hard to "see" cleanly from space. From orbit it looks a lot like ordinary cloud, desert dust, or haze. This page gives you an honest first look at *how much stuff is in the air column* over a volcano, which is enough to spot that something dramatic happened.
Is a volcano throwing up ash that could ground flights near me?
When a volcano erupts, it injects tiny solid and liquid particles (ash and sulfate droplets, collectively called aerosol) high into the air. Jet engines and volcanic ash don’t mix, so a big ash cloud can close airspace for days. The catch is that ash is genuinely hard to “see” cleanly from space. From orbit it looks a lot like ordinary cloud, desert dust, or haze. This page gives you an honest first look at how much stuff is in the air column over a volcano, which is enough to spot that something dramatic happened.
Which data to use, and how
Use this dataset: MERRA-2 aerosol (short name M2T1NXAER). It’s a
NASA reanalysis: a physics model fed decades of real satellite and ground
measurements, so it produces one consistent, gap-free picture of the atmosphere. From it you read a
single field called TOTEXTTAU (total aerosol optical thickness). That’s one hourly number, for any spot on
Earth back to 1980, saying how much aerosol is sitting in the whole vertical column of air. A
small number means clear air. A big number means the column is packed with particles. It’s the
easiest way in because it’s one tidy number per hour, with no need to untangle ash from cloud by eye.
Then do four steps (the runnable code further down does all of this; this is just the idea):
- Pick your volcano: a small latitude/longitude box around it — and the eruption window you care about (a few days around the event).
- Read the aerosol number: pull
TOTEXTTAUfor each hour inside your box. This is the column-total amount of aerosol overhead. - Find the peak and the background: take the highest value during the eruption window, and the average over the box, so you can see the spike against normal air.
- Compare to quiet times: line the eruption window up against the calm weeks before it. A jump well above the usual background is the reanalysis fingerprint of a fresh plume.
That’s the whole method. Below, “How a scientist answers this” names the exact tools, and the Run it cell does it live on synthetic data so you can see each step work.
What you can find out
- How loaded the air column was over a volcano, hour by hour, back to 1980: the
column-integrated
TOTEXTTAUnumber. - When aerosol spiked above the local background. Over the La Palma box (28.4–28.9 °N,
18.2–17.7 °W),
TOTEXTTAUhit a peak of 2.46 on 20 Sep 2021, the day after the Cumbre Vieja eruption began, versus a box average of about 0.56. A value near 2.5 means the column was extremely loaded, the signature of a fresh eruption plume. - Roughly which way the plume drifted: read the number across a wider downwind box hour by hour and watch the high-aerosol blob move.
- The aerosol type mix — MERRA-2 also carries separate sulfate, dust, and sea-salt components, so you can ask whether the loading looks volcanic (sulfate-heavy) or like a Saharan dust event.
- A long “normal” baseline for your area: so you know what a real anomaly actually looks like.
What it can’t tell you
- Whether it’s ash specifically, or how high it is.
TOTEXTTAUis one lumped column total. It doesn’t split ash from cloud or dust, and the reanalysis carries no flight-level altitude for an ash layer. Knowing the height is exactly what aviation needs, and this number can’t give it. - Anything an airline can act on. Real flight decisions come from the official Volcanic Ash Advisory Centres, which use dedicated infrared and SO₂ instruments (see below), not this proxy.
- The exact moment of eruption. MERRA-2 is a model on a coarse ~50 km grid. It smooths and lags fast plume dynamics, so it can’t pinpoint the start to the minute.
- Fine detail right next to the vent. At ~50 km, a single grid cell blends the volcano with its surroundings. For the sharp shape of the plume you need higher-resolution imagery.
- Real-time alerts. MERRA-2 publishes weeks late. For “what’s happening right now,” you need the near-real-time products, not this one.
Gotchas to watch for
TOTEXTTAUis a proxy, not an ash detector. It tells you the column is loaded, not what with, so it answers “did something big happen?” but never grounds a flight. Don’t present it as an ash-or-no-ash verdict; read a big spike as a flag that says go look with the proper instruments.- The grid is coarse (~50 km). A tiny early plume can get averaged away inside one cell, and a single cell can’t show plume shape, so you see the big picture rather than the fine structure. To follow drift, zoom out to a downwind box; for shape, reach for sharp imagery like VIIRS or MODIS.
- It lags by weeks. Being a reanalysis (a model digesting past observations) means it is not live, which makes it useless in an emergency but excellent for studying a past eruption. When you need “right now,” switch to near-real-time infrared and SO₂ products.
- Slice before you read. The files are hourly and global, which is a lot of data. Open the file lazily and cut to your volcano’s bounding box before loading values, or you’ll wait on data you don’t need.
The real-data code
The Run it cell above runs this method on synthetic data with no login. Below is the whole
recipe against the real archive: search, open each hourly NetCDF lazily, read TOTEXTTAU over the
volcano, find the eruption-window peak, compare it to a quiet baseline, and plot the spike. It needs
a free Earthdata Login (one free account unlocks the download).
Verified locally.
M2T1NXAER, variableTOTEXTTAU, is an hourly global NetCDF. Open it lazily and slice your volcano’s bounding box before reading. The peak over La Palma on 2021-09-20 came out to 2.46 (dimensionless aerosol optical thickness).
import warnings, earthaccess, numpy as np, xarray as xr
import matplotlib.pyplot as plt
warnings.filterwarnings("ignore") # quiet earthaccess FutureWarnings
earthaccess.login(strategy="netrc") # free Earthdata Login
W, S, E, N = -18.2, 28.4, -17.7, 28.9 # your volcano (La Palma, Cumbre Vieja)
# Read TOTEXTTAU (column aerosol optical thickness) for a date range, box-averaged
# per hour. Slice the bounding box BEFORE loading — the files are hourly and global.
def box_series(start, end):
g = earthaccess.search_data(short_name="M2T1NXAER",
temporal=(start, end), bounding_box=(W, S, E, N))
times, vals = [], []
for ds in (xr.open_dataset(f) for f in earthaccess.open(g)):
aot = ds["TOTEXTTAU"].sel(lat=slice(S, N), lon=slice(W, E))
box = aot.mean(dim=("lat", "lon")) # one number per hour over the box
times.append(box["time"].values); vals.append(box.values)
t = np.concatenate(times); v = np.concatenate(vals)
order = np.argsort(t)
return t[order], v[order]
# 1. Eruption window: the days around Cumbre Vieja starting 2021-09-19.
et, ev = box_series("2021-09-19", "2021-09-23")
# 2. Quiet baseline: the two calm weeks before the eruption, same box.
bt, bv = box_series("2021-09-01", "2021-09-15")
base_mean, base_sd = float(np.nanmean(bv)), float(np.nanstd(bv))
# 3. Find the peak during the eruption and how far it stands above normal air.
peak_i = int(np.nanargmax(ev))
peak, peak_t = float(ev[peak_i]), et[peak_i]
sigma = (peak - base_mean) / base_sd
# 4. Verdict: a peak many sigma above the quiet background is the reanalysis
# fingerprint of a fresh plume (not an ash-or-no-ash ruling — see the gotchas).
print(f"peak column AOT {peak:.2f} at {str(peak_t)[:13]}h "
f"({sigma:.0f}x the quiet background of {base_mean:.2f}+/-{base_sd:.2f})")
# 5. Plot the eruption-window series against the baseline band.
plt.plot(et, ev, label="eruption window")
plt.axhspan(base_mean - base_sd, base_mean + base_sd, color="0.8", label="quiet baseline")
plt.scatter([peak_t], [peak], c="r", zorder=3, label=f"peak {peak:.2f}")
plt.ylabel("TOTEXTTAU (column AOT)"); plt.xlabel("time"); plt.legend()
plt.tight_layout(); plt.show()
# Before you trust it: TOTEXTTAU lumps ash with cloud and dust, so cross-check a big
# spike with split-window IR (VIIRS/MODIS) and OMPS SO2 — the operational ash tools.
Where the data comes from
MERRA-2 (M2T1NXAER) comes from NASA’s GES DISC archive and downloads with one free Earthdata Login.
It’s a reanalysis: a weather-and-aerosol model that has swallowed decades of satellite and ground
observations to produce one consistent record. Real aviation work builds the picture from a
different toolset. The Volcanic Ash Advisory Centres lean on split-window infrared imagery
(from VIIRS and MODIS) to separate ash from cloud, plus OMPS sulfur-dioxide and aerosol-index
retrievals. MERRA-2 is your honest first look; those are the operational answer.
Sources
- M2T1NXAER (MERRA-2 hourly aerosol diagnostics): https://disc.gsfc.nasa.gov/datasets/M2T1NXAER_5.12.4/summary
- MERRA-2 aerosol (GOCART) overview: https://gmao.gsfc.nasa.gov/reanalysis/MERRA-2/
- OMPS SO₂ and aerosol index: https://so2.gsfc.nasa.gov/
- VIIRS imagery (NASA Worldview): https://worldview.earthdata.nasa.gov/
Make it yours → Set your volcano's bounding box and the eruption date window, and add OMPS SO2 for an ash-specific cross-check.
A safe place to practise the method on M2T1NXAER. The code is the real earthaccess workflow, but we feed it stand-in data shaped like the real product — so you can run it, change the numbers, and break it without an account. When you want the real data, use the recipe under “The real-data code” above, or download the notebook below.