q05·advanced

How is global atmospheric CO₂ changing, and where are the strongest sources?

atmospheregreenhouse-gasescarbon-cycleclimate Datasets: 5 30–90 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: -95.5, 29.5 → -95, 30 (Houston metro area)
On this page

How is global atmospheric CO₂ changing, and where are the strongest sources?

What you can answer

  • Global XCO₂ trend (~2.5 ppm/yr current rate, seasonal cycle, annual growth rate)
  • Regional gradients (highest over Asia industrial corridors, lowest over Southern Ocean)
  • Anthropogenic point sources via OCO-3 SAM mode (megacities, power plants — when sky is clear)
  • Biosphere uptake via SIF (forests vs croplands vs grasslands)
  • El Niño / La Niña impact on tropical land carbon (a major OCO finding)

What you can NOT answer with these alone

  • Direct flux (kg CO₂/sec) — requires inversion via atmospheric-transport model (use OCO MIP).
  • Per-facility emissions without high-fidelity wind + boundary-layer height (use MERRA-2 PBL + 850 hPa winds).
  • Methane, which is on TROPOMI, EMIT, GOSAT, MERLIN — not on OCO sensors.

Code template

import earthaccess
import xarray as xr

earthaccess.login(strategy="netrc")

# Year-scale trend: OCO-2 global XCO2 monthly mean 2015-2025
aoi = None  # global
window = ("2015-01-01", "2025-12-31")
oco2 = earthaccess.search_data(short_name="OCO2_L2_Lite_FP",
                               temporal=window)

# Open all granules, filter by xco2_quality_flag == 0 (good)
# Compute monthly mean per 2°×2° grid → trend line + seasonal harmonic fit

# Facility-scale: OCO-3 SAM over a specific city/plant
sam_aoi = (-95.5, 29.5, -95.0, 30.0)  # Houston area
oco3 = earthaccess.search_data(short_name="OCO3_L2_Lite_FP",
                               bounding_box=sam_aoi,
                               temporal=("2022-01-01", "2024-12-31"))
# Extract XCO2 + wind context from MERRA-2 → enhancement above background

Expected output

  • Global map: 2015 mean XCO₂ minus 2024 mean XCO₂ (annotated with major source regions)
  • Time-series: monthly global XCO₂ 2015–present (showing seasonal cycle + secular rise)
  • Facility raster: OCO-3 SAM mode dense XCO₂ over a megacity, with wind-corrected enhancement overlay
  • SIF map: spring vs fall growing-season comparison for a major biome

Caveats

  • Cloud screening removes 75-90% of footprints. Sparse coverage is the default; aggregate to monthly or coarser.
  • Quality flags are criticalxco2_quality_flag == 0 is the only thing you should trust unfiltered. QF=1 is questionable; QF=2 should be discarded.
  • Bias corrections (v11.2 vs v10) matter for trend analyses spanning the version change.
  • SIF is a photosynthesis proxy, not GPP directly — the relationship varies by ecosystem, water stress, species composition.
  • OCO-3 SAM is scheduler-driven — not every target gets observed on every overpass.

Cross-DAAC composition

GES DISC (OCO-2/3 + MERRA-2) → all via earthaccess with single Earthdata Login.

Sources

How a scientist answers this
Parameters
Column-averaged dry-air CO2 mole fraction (XCO2, ppm) from OCO-2 L2 Lite (~3 km nadir, 2014–) and OCO-3 L2 Lite (including city-targeting SAM mode), filtered to good-quality soundings (xco2_quality_flag == 0); Solar-Induced Fluorescence (SIF) as a photosynthesis proxy; MERRA-2 winds/PBL for source context. Trends are reported as ppm/yr growth rate with a seasonal cycle and confidence interval.
Method
Grid quality-filtered XCO2 to a regular mesh, area-weight (cos-lat) the spatial means, fit a seasonal harmonic plus a Theil–Sen / robust linear trend with Mann–Kendall significance for the global growth rate; for point sources, difference OCO-3 SAM-mode XCO2 across a city/plume against the upwind background using MERRA-2 wind. Direct fluxes require an atmospheric-transport inversion (OCO MIP), not the columns alone.
Validation
Anchor XCO2 against TCCON ground-based total-column stations and the in-situ surface growth rate; respect quality and bias-correction flags, account for clear-sky sampling bias and the smaller SAM-mode footprint; for sources, verify against reported inventories and inversion (OCO MIP) results.
In plain EnglishMeasure the CO2 in the air column from space over many years, remove the regular up-and-down of the seasons, and read off how fast it is rising; for cities and power plants, compare the CO2 directly over the source to the clean air just upwind. Turning that into tons emitted needs a wind-and-mixing model.

Make it yours → Choose global or a regional/city box, the year range, and the quality filter in the notebook; switch OCO-2 nadir for OCO-3 SAM mode to target a specific facility.

Datasets used