q08·beginner

How much rainfall has my region had this year compared to the 30-year normal?

hydrologyprecipitationclimate-anomaly Datasets: 4 5–15 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: 74, 18 → 78, 21 (Maharashtra agricultural belt)

How much rainfall has my region had this year vs the 30-year normal?

What you can answer

  • Year-to-date precipitation total for any AOI
  • Comparison to 20-year IMERG climatology (2000-2024 baseline)
  • Drought / wet anomaly index as % of normal
  • Spatial pattern of the anomaly (which sub-regions are driest/wettest)
  • Seasonal disaggregation (monsoon-vs-non-monsoon, wet-vs-dry season)

What you can NOT answer with these alone

  • 30+ year climate-normal trends — IMERG starts 2000; older satellite era is TRMM (1997-2015, tropics only) or model reanalysis (MERRA-2 1980+).
  • Snowfall water equivalent without ground stations or SnowEx data.
  • Hourly extreme events outside the IMERG half-hourly grid.

Code template

import earthaccess
import xarray as xr
import numpy as np

earthaccess.login(strategy="netrc")

# AOI: Maharashtra agricultural belt
aoi = (74, 18, 78, 21)
this_year = 2025
clim_window = ("2000-06-01", "2020-12-31")  # 20-yr climatology

# 1. Current year IMERG daily
current = earthaccess.search_data(short_name="GPM_3IMERGDF",
                                  bounding_box=aoi,
                                  temporal=(f"{this_year}-01-01",
                                            f"{this_year}-12-31"))
# Open as xarray, sum precipitation_cal over time → year total per pixel

# 2. Climatology (2000-2020 baseline, mean annual rainfall per pixel)
clim = earthaccess.search_data(short_name="GPM_3IMERGM",
                               bounding_box=aoi, temporal=clim_window)
# Group by month, average across years → 12-month climatology

# 3. Anomaly = (current_year_total - climatology_mean) / climatology_mean × 100
# 4. Plot: anomaly heatmap + spatial mean line + monthly bars

Expected output

  • Annual-total map: this year’s mm/yr per pixel
  • Anomaly map: % of normal per pixel (red < 80%, green 80-120%, blue > 120%)
  • Time-series: cumulative current-year rainfall vs climatology (with shading for normal range)
  • Monsoon-season-specific bars: this year’s June-Sept total vs 20-year mean Jun-Sept

Caveats

  • IMERG Final has 3.5-month latency — use Late (~12-hr) or Early (~4-hr) for NRT comparisons (with accuracy tradeoff)
  • V07 is current; V06 deprecated. Reprocess any cached pre-2023 data
  • Orographic underestimation: mountainous regions (Himalayas, Western Ghats) show systematic IMERG under-bias vs gauges
  • 30-year normal isn’t actually 30 years for IMERG — only ~25 years available (2000+). For the WMO 30-yr normal use MERRA-2 or CHIRPS or gauge-based products

Cross-DAAC composition

GES DISC only — single DAAC, single auth.

Sources

Datasets used

📚 Problem Finder KB

2 matching entries in the Knowledge Base:

§14 Glossary
GPM
Global Precipitation Measurement (NASA mission)
IMERG
Integrated Multi-satellitE Retrievals for GPM