q19·intermediate
Is a volcano degassing or erupting — can I track its SO₂ plume?
atmosphereair-qualitydisaster-response Datasets: 5 20–45 min
▶ Find the data for your area
Draw a rectangle to pick your area of interest, then see what NASA data covers it (live, here in your browser) or download a ready-to-run notebook with your AOI pre-filled. The notebook runs in any Python environment — it needs a free Earthdata Login to fetch the data.
Current AOI:
-155.4, 19.3 → -155.2, 19.5 (Kīlauea summit (Halemaʻumaʻu), Hawaiʻi)Is a volcano degassing or erupting — can I track its SO₂ plume?
What you can answer
- Whether SO₂ is present above background over the vent on a given overpass day (TROPOMI HiR, OMI, OMPS).
- Plume direction + downwind extent by mapping the SO₂ column against MERRA-2 winds.
- A relative degassing-vs-eruption signal — quiescent degassing shows a modest, vent-anchored column; an eruption shows a large, fast-spreading, sometimes high-altitude plume.
- Whether a hot vent is thermally active by joining VIIRS/MODIS thermal-anomaly (fire) pixels at the summit.
- A multi-day time-series of SO₂ column over the AOI to flag escalation or a new unrest episode.
What you can NOT answer with these datasets alone
- Continuous / overnight monitoring — these are sun-synchronous polar orbiters with roughly one daytime overpass per day; you get snapshots, not surveillance, and missed an eruption that started and ended between passes.
- Precise SO₂ emission rate (tonnes/day) without an explicit flux calculation (column × wind × transect) and an assumed plume height — and the retrieval itself depends on which air-mass/box-height assumption you select.
- Eruption forecasting — SO₂ alone does not predict onset; pair with ground deformation (InSAR/GPS), seismicity, and the local volcano observatory.
- Plume altitude precisely — column retrievals assume a layer height; ash-vs-SO₂ vertical separation needs lidar (e.g., CALIPSO legacy) or aircraft data.
- Ash mass loading — SO₂ is a gas proxy; volcanic ash is a separate retrieval (e.g., VIIRS/MODIS brightness-temperature difference) and matters most for aviation.
Code template (Python, cloud-direct)
import earthaccess
import xarray as xr
import pandas as pd
earthaccess.login(strategy="netrc")
# Example: Kīlauea summit degassing/unrest window
aoi = (-155.4, 19.3, -155.2, 19.5) # W, S, E, N — Halemaʻumaʻu
window = ("2024-06-01", "2024-06-30")
# 1. TROPOMI SO2 (high-res) — primary product, mirrored at GES DISC
s5p = earthaccess.search_data(
short_name="S5P_L2__SO2____HiR",
bounding_box=aoi,
temporal=window,
)
# 2. OMPS-NPP Nadir Mapper SO2 (PCA algorithm) as a cross-check / longer record
omps = earthaccess.search_data(
short_name="OMPS_NPP_NMSO2_PCA_L2",
bounding_box=aoi,
temporal=window,
)
# 3. VIIRS thermal anomalies — is the vent hot?
viirs_fire = earthaccess.search_data(
short_name="VNP14",
bounding_box=aoi,
temporal=window,
)
# 4. MERRA-2 instantaneous 3-hourly winds for plume advection
merra = earthaccess.search_data(
short_name="M2I3NPASM",
bounding_box=aoi,
temporal=window,
)
# 5. Open TROPOMI cloud-direct (no download), read the SO2 column group,
# apply the qa_value mask (keep qa_value > 0.5), and clip to the AOI.
files = earthaccess.open(s5p)
ds = xr.open_dataset(files[0], group="PRODUCT")
so2 = ds["sulfurdioxide_total_vertical_column"].where(ds["qa_value"] > 0.5)
# 6. Per overpass: AOI-mean + max SO2 column → daily time-series
# 7. Overlay strongest day's SO2 swath + MERRA-2 wind vectors → plume map
# 8. Mark VIIRS thermal-anomaly pixels at the summit
Expected output
- Map: TROPOMI SO₂ column (mol/m²) over the vent on the peak day, with MERRA-2 wind vectors showing the downwind plume and VIIRS thermal-anomaly pixels at the summit.
- Time-series: AOI-mean and AOI-max SO₂ column across the window — a step-up flags an escalation from quiescent degassing toward eruption.
- Cross-sensor sanity check: TROPOMI vs OMPS SO₂ for the same days (independent retrievals, different footprints).
Caveats
- SO₂ retrievals assume a plume height. TROPOMI/OMI/OMPS publish multiple SO₂ products keyed to assumed layer altitude (boundary-layer vs lower/mid/upper troposphere); pick the box-height that matches your scenario or you will misread the column.
- Low columns are noisy. Always apply the
qa_valuemask for TROPOMI and the quality flags for OMI/OMPS; weak degassing sits near the detection floor. - One daytime overpass per day. Eruptions are bursty; a clean overpass can still miss the peak. Cross-check the local volcano observatory (e.g., USGS HVO) and NRT feeds.
- Ash ≠ SO₂. For aviation hazard you need an ash retrieval too — these gas products will not flag an ash cloud on their own.
- Aviation / real-time relevance. Volcanic SO₂ and ash drift into flight corridors; the operational responders are the Volcanic Ash Advisory Centers (VAACs) and the Support to Aviation Control Service (SACS), which ingest TROPOMI/OMPS SO₂ in near-real-time. This atlas page is for analysis, not flight ops.
Cross-DAAC composition
GES DISC (TROPOMI SO₂ mirror, OMI OMSO2, OMPS NMSO2, MERRA-2) + LAADS/LANCE (VIIRS/MODIS thermal anomalies). Auth is uniform via Earthdata Login; the original TROPOMI L2 also lives in the Copernicus Data Space if you prefer the source.
Sources
- TROPOMI SO₂ (GES DISC): https://disc.gsfc.nasa.gov/datasets/S5P_L2__SO2____HiR_2/summary
- OMI SO₂ (OMSO2): https://disc.gsfc.nasa.gov/datasets/OMSO2_003/summary
- OMPS-NPP NMSO2 PCA: https://disc.gsfc.nasa.gov/datasets/OMPS_NPP_NMSO2_PCA_L2_2/summary
- NASA Global Sulfur Dioxide Monitoring: https://so2.gsfc.nasa.gov/
- Support to Aviation Control Service (SACS, near-real-time SO₂/ash): https://sacs.aeronomie.be/
- USGS Hawaiian Volcano Observatory (Kīlauea): https://www.usgs.gov/observatories/hvo
- VIIRS active fire / thermal anomaly (VNP14): https://lpdaac.usgs.gov/products/vnp14a1v002/
Datasets used
📚 Problem Finder KB
Not yet tracked in the KB.