q15·intermediate

How are coastal sea-surface temperatures changing, and are marine heatwaves becoming more common?

oceanclimatemarine-ecosystemfisheries Datasets: 6 15–45 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: -116, 22 → -107, 32 (Gulf of California)

How are coastal sea-surface temperatures changing?

What you can answer

  • Decadal SST trend for any coastal pixel (2002-present)
  • Climatological seasonal cycle vs current-year deviation
  • Marine heatwave detection (≥5 days above 90th percentile)
  • Spatial gradient between coast and open ocean
  • Cross-shelf vs cross-shore variability

What you can NOT answer with these alone

  • Sub-surface temperature without combining with ECCO reanalysis or Argo float data
  • Internal-wave dynamics at scales under 4 km without high-resolution SAR + altimetry combinations
  • Causal attribution to a specific climate driver (ENSO, AMO) — requires separate analysis

Code template

import earthaccess
import xarray as xr
import numpy as np

earthaccess.login(strategy="netrc")

# Gulf of California (climate-vulnerable hotspot)
aoi = (-116, 22, -107, 32)
window = ("2002-07-01", "2025-12-31")

# 1. GHRSST L4 daily 1 km (gap-filled, multi-sensor analysis)
ghrsst = earthaccess.search_data(short_name="MUR-JPL-L4-GLOB-v4.1",
                                 bounding_box=aoi, temporal=window)
# Open all granules; extract analysed_sst (in Kelvin); subset to AOI
# Compute monthly mean per pixel → climatology
# Current year monthly mean → anomaly

# 2. Marine heatwave detection
# A pixel-day is a "heatwave day" if SST > 90th percentile of climatology
# (typically using 30-year baseline, but 20+ year MUR record works)
# A "heatwave" = ≥5 consecutive heatwave days
# Count heatwave-days per year → trend

# 3. SWOT SSH context (current eddies)
swot = earthaccess.search_data(short_name="SWOT_L2_LR_SSH_2.0",
                               bounding_box=aoi,
                               temporal=("2024-03-01", "2025-12-31"))
# Overlay SSH anomaly on SST anomaly → eddy-attributed warm spots

# 4. Plot:
#    - Decadal trend map
#    - Marine heatwave frequency per year
#    - Monthly anomaly time-series
#    - SST + SSH cross-section

Expected output

  • Decadal trend map (°C/decade) for the AOI
  • Marine heatwave frequency: heatwave-days per year time-series 2002-present
  • Current-year anomaly map vs 20-year climatology
  • Cross-section: SST + sub-surface temperature from ECCO

Caveats

  • GHRSST L4 is gap-filled analysis — daily-global is possible because it interpolates across cloudy regions; consistency, not direct observation, in those pixels
  • Coastal SST has skin-vs-bulk differences — satellites measure top millimeter; oceanographic in-situ measures meters down. Subtle differences for ecological work.
  • Cloud bias: coastal regions are often persistently cloudy (e.g., California coast in summer); aggregated products handle this but high-resolution single-day products often have data gaps
  • Marine-heatwave threshold convention varies — Hobday et al. 2016 is the most-cited; pick a published convention and document it

Cross-DAAC composition

OB.DAAC (MODIS Aqua SST, PACE OCI) + PO.DAAC (GHRSST, SWOT, ECCO) — two DAACs, uniform Earthdata Login.

Sources

📚 Problem Finder KB

1 matching entry in the Knowledge Base:

§14 Glossary
MUR SST
Multi-scale Ultra-high Resolution Sea Surface Temperature