q04·intermediate

Did a wildfire impact downwind air quality, and how far did the smoke reach?

atmospherefireair-qualitypublic-health Datasets: 6 20–60 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: -125, 35 → -115, 42 (California + western Nevada)

Did a wildfire impact downwind air quality?

What you can answer

  • Fire pixel locations within hours of detection (FIRMS NRT)
  • Smoke plume direction + transport distance (OMI UV Aerosol Index, MODIS True Color RGB, TEMPO HCHO)
  • Downwind HCHO / NO₂ spike (TEMPO over NA; OMI/TROPOMI globally)
  • Burn-scar extent + severity post-event (MCD64A1, HLS NBR)
  • Population exposure estimate when combined with gridded population (SEDAC legacy or external)

What you can NOT answer with these alone

  • Surface PM₂.₅ concentrations without combining with EPA AirNow or chemistry-transport model
  • Health impact — requires epidemiology + exposure modeling beyond pure remote sensing
  • Specific particle composition without ground-based or aircraft sampling

Code template

import earthaccess, requests
import xarray as xr
import pandas as pd

earthaccess.login(strategy="netrc")

# Example: California wildfire complex, July 2024
fire_window = ("2024-07-15", "2024-08-15")
aoi = (-125, 35, -115, 42)  # CA + western NV

# 1. FIRMS NRT fire pixels — REST API (no auth needed for public NRT)
firms_url = ("https://firms.modaps.eosdis.nasa.gov/api/area/csv/"
             f"YOUR_KEY/VIIRS_SNPP_NRT/{aoi[1]},{aoi[0]},{aoi[3]},{aoi[2]}/"
             f"7/2024-07-15")
fires = pd.read_csv(firms_url)

# 2. TEMPO HCHO during the event
tempo_hcho = earthaccess.search_data(short_name="TEMPO_HCHO_L2",
                                     bounding_box=aoi, temporal=fire_window)

# 3. MERRA-2 winds at 850 hPa for plume direction
merra = earthaccess.search_data(short_name="M2I3NPASM",  # instantaneous 3-hourly
                                bounding_box=aoi, temporal=fire_window)

# 4. Overlay: fire pixels + HCHO column + wind vectors → smoke trajectory
# 5. MCD64A1 for post-event burned-area scar
burn = earthaccess.search_data(short_name="MCD64A1", bounding_box=aoi,
                               temporal=("2024-08-01", "2024-09-01"))

Expected output

  • Map: fire pixels (red) + HCHO column (purple gradient) + wind vectors → visualizes smoke trajectory
  • Time-series: HCHO column averaged over downwind AOI before/during/after the event
  • Burn-scar polygon overlaid on pre-event Landsat true-color

Caveats

  • FIRMS is NRT, not analysis-grade. Use MCD64A1 (monthly) for the authoritative burn-area record.
  • TEMPO HCHO is the smoke chemistry proxy, NOT direct smoke aerosol; pair with MODIS AOD or OMI Aerosol Index.
  • PBL height matters. Above the boundary layer, plume disperses faster; check MERRA-2 PBLH for the period.
  • Cloud contamination during smoke events is tricky — smoke can look like cloud in some retrievals; check MOD06 cloud flags.
  • TEMPO is North America only. Use OMI/TROPOMI for global fires (e.g., Amazon, Siberia, Indonesia).

Cross-DAAC composition

ASDC (TEMPO) + GES DISC (OMI, MERRA-2) + LP DAAC (MCD64A1) + LANCE (FIRMS). Uniform Earthdata Login except FIRMS NRT (separate API key).

Sources

Datasets used

📚 Problem Finder KB

1 matching entry in the Knowledge Base:

§14 Glossary
TEMPO
Tropospheric Emissions: Monitoring of Pollution (NASA atmospheric mission)