Where is methane rising from paddies, livestock, and landfills near me?
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.
80, 25 → 86, 28 (Gangetic plain (UP–Bihar))Where is methane rising from paddies, livestock, and landfills near me?
What you can answer
- Regional XCH4 enhancement (column minus background) for any AOI from TROPOMI
- Persistent methane hotspots by compositing daily overpasses over weeks–months
- Paddy vs steady-source seasonality by comparing monsoon-flood vs dry-season windows
- Facility-scale plumes (landfills, large point sources) from EMIT 60 m imaging
- Multi-year drift using the GOSAT long record (2009+) for context
What you can NOT answer with these alone
- Surface emission flux in tonnes/yr — TROPOMI is a column, not a flux; conversion needs an inversion model with meteorology.
- Source separation within a pixel — at ~5.5 km, paddy + livestock + urban + landfill mix; needs EMIT/airborne or inventories to disaggregate.
- Cloudy / low-albedo days — retrievals drop out under cloud, haze and over dark/wet surfaces; flooded paddies themselves can lower retrieval quality.
- Cause vs accumulation — a high column under stagnant air may be trapped methane, not a local source, without transport analysis.
Code template
import earthaccess
import xarray as xr
import numpy as np
earthaccess.login(strategy="netrc")
# AOI: Gangetic plain (UP–Bihar)
aoi = (80, 25, 86, 28)
# Monsoon window (paddy flooding) vs dry window (steady sources)
windows = {
"monsoon": ("2024-07-01", "2024-09-30"),
"dry": ("2025-01-01", "2025-03-31"),
}
xch4_comp = {}
for label, (start, end) in windows.items():
granules = earthaccess.search_data(
short_name="S5P_L2__CH4___", # TROPOMI L2 CH4, ~5.5 km
bounding_box=aoi,
temporal=(start, end),
)
# Open methane_mixing_ratio_bias_corrected + qa_value from each granule
# ds = xr.open_mfdataset(...) for the PRODUCT group
# Keep only good retrievals (recommended qa_value > 0.5)
# ds = ds.where(ds.qa_value > 0.5)
# Regrid scattered L2 pixels onto a regular grid (e.g. ~0.05°),
# then composite (median) over the window
# grid = regrid_and_median(ds.methane_mixing_ratio_bias_corrected)
# Background = low percentile over the AOI (clean-air reference)
# bg = np.nanpercentile(grid, 10)
# enhancement = grid - bg # ppb above background
xch4_comp[label] = "<gridded enhancement>"
# Seasonality discriminator:
# paddy signal ~ (monsoon enhancement) - (dry enhancement) > 0
# steady source ~ enhancement present in BOTH windows
# For facility-scale plumes, drop in EMIT scenes (EMITL2BCH4ENH /
# EMITL2BCH4PLM) over flagged landfill locations and inspect 60 m plumes.
Expected output
- XCH4 enhancement map (ppb above regional background) per season window
- Persistent-hotspot composite (pixels enhanced across the whole window)
- Monsoon-minus-dry difference map highlighting paddy-driven seasonality
- EMIT plume insets at landfill / point-source locations (60 m)
- Optional overlay of a bottom-up inventory (EDGAR) for sanity-checking
Caveats
- Column, not flux: high XCH4 can mean trapped air under stagnant meteorology, not local emission. Pair with winds before naming a source.
- Retrieval artefacts: albedo, aerosol and cloud bias XCH4 — always apply the
qa_valuefilter (recommended > 0.5) and be wary over bright deserts, dark water and haze. - Coarse pixels mix sources: at ~5.5 km, paddy, livestock and landfill emissions blend; treat TROPOMI as regional, and use EMIT/airborne to attribute facility plumes.
- Paddy retrievals are tricky: standing water lowers surface reflectance and can degrade retrieval quality exactly where paddy methane peaks — check pixel counts per window.
- EMIT is opportunistic: 60 m plume detection has limited, scheduled coverage and detects strong point sources, not diffuse area emissions like flooded fields.
- Verify before attribution: confirm hotspots against inventories (EDGAR), repeat overpasses, or airborne campaigns; don’t assign a single source from one coarse scene.
Cross-DAAC composition
TROPOMI/Sentinel-5P CH4 is distributed by GES DISC. EMIT plume/enhancement products (EMITL2BCH4ENH / EMITL2BCH4PLM) come from LP DAAC — a separate DAAC, so facility-scale analysis spans two auth contexts under the common Earthdata login.
Sources
- Sentinel-5P TROPOMI CH4: https://disc.gsfc.nasa.gov/datasets/S5P_L2__CH4____HiR_2/summary
- TROPOMI CH4 product readme (qa / bias correction): https://sentinel.esa.int/documents/247904/2474726/Sentinel-5P-Methane-Product-Readme-File
- EMIT methane: https://earth.jpl.nasa.gov/emit/data/data-products/
- GOSAT/ACOS XCH4: https://disc.gsfc.nasa.gov/datasets?keywords=ACOS
- EDGAR emission inventory: https://edgar.jrc.ec.europa.eu/
Make it yours → Choose your region and season, set the background reference, and the notebook maps the XCH4 enhancement and composites persistent hotspots. Toggle the monsoon vs dry-season window to separate paddy pulses from steady livestock/landfill sources, and drop in EMIT plume scenes to zoom to facility scale.
The detection / counting above a threshold at the heart of this question — runnable on synthetic data, right here. The full earthaccess code template further down does it on real NASA data (needs an Earthdata login).