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
- FIRMS API: https://firms.modaps.eosdis.nasa.gov/api/
- TEMPO HCHO: https://asdc.larc.nasa.gov/project/TEMPO
- MCD64A1: https://lpdaac.usgs.gov/products/mcd64a1v061/
Datasets used
FIRMS
Where fires are burning right now
FIRMS (Fire Information for Resource Management System)
LANCE/FIRMS (cross-DAAC, NASA Goddard hosted) · 1 km (MODIS) / 375 m (VIIRS)
MCD64A1
Where land has burned
MODIS Combined Burned Area Monthly 500m
LP DAAC · 500 m
MERRA-2
A weather & climate record back to 1980
MERRA-2 Modern-Era Retrospective Analysis for Research and Applications
GES DISC · 0.5° × 0.625°
📚 Problem Finder KB
1 matching entry in the Knowledge Base:
§14 Glossary
TEMPO
Tropospheric Emissions: Monitoring of Pollution (NASA atmospheric mission)