q03·intermediate

How has air quality changed in my city over the last decade?

atmosphereair-qualitypublic-healthurban Datasets: 5 10–30 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: 72.7, 18.9 → 73.1, 19.3 (Greater Mumbai)

How has air quality changed in my city over the last decade?

What you can answer

  • NO₂ column trend over 5+ years (OMI 2004+, TROPOMI 2018+, TEMPO 2023+ for North America)
  • Aerosol optical depth (AOD) trend (MODIS MAIAC, MOD/MYD04)
  • Seasonal cycle changes (weekday vs weekend, summer vs winter)
  • COVID-19 anomaly (the canonical 2020 drop in NO₂)
  • Post-policy intervention impact (e.g., diesel-truck restrictions, EV adoption)

What you can NOT answer with these alone

  • Surface concentrations. Satellites measure column-integrated burden; surface NO₂ requires combining with chemistry-transport model output.
  • Specific source attribution without ancillary land-use + emissions inventory data.
  • Hourly cycles before 2024 outside North America (TEMPO is GEO; OMI/TROPOMI are polar-orbit daily).

Code template

import earthaccess
import xarray as xr

earthaccess.login(strategy="netrc")

# AOI: greater Mumbai
aoi = (72.7, 18.9, 73.1, 19.3)

# 1. OMI L2 NO2 — long backbone
omi = earthaccess.search_data(short_name="OMNO2", bounding_box=aoi,
                              temporal=("2015-01-01", "2025-12-31"))
# Open + extract ColumnAmountNO2Trop, average monthly per pixel

# 2. TROPOMI overlap (2018+) — higher resolution
trop = earthaccess.search_data(short_name="S5P_L2__NO2___", bounding_box=aoi,
                               temporal=("2018-04-01", "2025-12-31"))

# 3. Build a unified time series:
#    - OMI monthly mean for 2015-2017 (pre-TROPOMI)
#    - TROPOMI monthly mean for 2018-2025
#    - Apply known bias correction between OMI and TROPOMI

# 4. Plot 2015-2025 trend, annotate COVID-19 dip, policy changes

Expected output

  • Line chart: monthly mean tropospheric NO₂ column 2015–present, with overlay markers for known interventions
  • Map: spatial pattern of NO₂ for two epochs (e.g., 2015-2019 mean vs 2020-2024 mean)
  • Seasonal cycle: weekly cycle showing weekday vs weekend signal

Caveats

  • OMI row anomaly: discard rows 24-52 (and later, more) since 2007. Use the XTrackQualityFlags.
  • OMI 13×24 km vs TROPOMI 5×3.5 km: different spatial averaging when comparing epochs. Either downsample TROPOMI to OMI grid or upscale OMI with caution.
  • Cloud filter: clouds eat 30-70% of observations per scene. Aggregate monthly to smooth.
  • The 2020 COVID dip is a known reference event — your trend pipeline should reproduce it as a sanity check.

Cross-DAAC composition

GES DISC for OMI/TROPOMI; ASDC for TEMPO; both via earthaccess + Earthdata Login. Single auth flow.

Sources

Datasets used

📚 Problem Finder KB

Not yet tracked in the KB.