q39·intermediate

Is my coast's water getting murkier after storms or runoff?

oceanwater-resourcescoastalpublic-health Datasets: 3 20–40 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: -91.5, 28.5 → -89, 30 (Louisiana shelf / Mississippi plume, USA)

When a river swells after rain or a storm churns up the seabed, the water near shore fills with sediment and dissolved material — and it stops letting light through. NASA measures exactly that: the **diffuse attenuation coefficient at 490 nm**, written `Kd_490`. It's how fast blue-green light fades with depth, in units of 1/m. Clear open ocean sits near **0.02–0.05**; murky, sediment-laden coastal water climbs well past **0.2**. MODIS-Aqua has mapped it globally every day since 2002, so you can watch your coast clear up and cloud over through the seasons. **Verified locally.** For the Louisiana shelf at the Mississippi River mouth (28.5–30.0 °N), the MODIS-Aqua `Kd_490` field had a median of **0.41 1/m** in the 8-day composite for 30 Apr – 7 May 2024 — roughly **ten times** clearer-water values, exactly the signature of a turbid river plume. Across the four 8-day windows in May 2024 the median ranged **0.27–0.41 1/m**, with the murkiest pixels (90th percentile) above **2 1/m** right at the river mouth. The plume is real and the satellite sees it.

Is my coast’s water getting murkier after storms or runoff?

When a river swells after rain or a storm churns up the seabed, the water near shore fills with sediment and dissolved material — and it stops letting light through. NASA measures exactly that: the diffuse attenuation coefficient at 490 nm, written Kd_490. It’s how fast blue-green light fades with depth, in units of 1/m. Clear open ocean sits near 0.02–0.05; murky, sediment-laden coastal water climbs well past 0.2. MODIS-Aqua has mapped it globally every day since 2002, so you can watch your coast clear up and cloud over through the seasons.

Verified locally. For the Louisiana shelf at the Mississippi River mouth (28.5–30.0 °N), the MODIS-Aqua Kd_490 field had a median of 0.41 1/m in the 8-day composite for 30 Apr – 7 May 2024 — roughly ten times clearer-water values, exactly the signature of a turbid river plume. Across the four 8-day windows in May 2024 the median ranged 0.27–0.41 1/m, with the murkiest pixels (90th percentile) above 2 1/m right at the river mouth. The plume is real and the satellite sees it.

What you can answer

  • How murky your coastal water is right now, and any day back to 2002 — MODIS-Aqua Kd_490 (1/m; higher means less light penetrates, i.e. murkier)
  • Whether a storm or flood pulse muddied the water — compare composites just before and just after the event and watch the median jump
  • The seasonal rhythm of clarity — build a month-by-month climatology and see when runoff season clouds your coast
  • How far a river plume reaches offshore — map Kd_490 across the shelf and trace the turbid tongue away from the river mouth
  • Clarity vs. greenness side by side — pair with chlorophyll-a to separate “muddy with sediment” from “green with algae”, and with sea surface temperature for storm context

What you can NOT answer with these datasets alone

  • What is making the water murkyKd_490 measures that light is blocked, not by what; sediment, dissolved organic matter, and dense algae all raise it and can’t be told apart from this number alone
  • Clarity on cloudy days — MODIS is optical, so storms and cloud cover (often the very days you care about) leave gaps; 8-day and monthly composites fill in, but the exact storm day may be blank
  • Conditions right at the shoreline or in narrow channels — at ~1–4 km resolution, a small marina, tidal creek, or surf zone is finer than a pixel, and land/shallow-bottom contamination can corrupt the very nearest pixels
  • Water quality you’d swim or fish byKd_490 is not turbidity (NTU), not bacteria, and not a health standard; it’s an optical index that correlates with murkiness, nothing more
  • Below the surface — this is an optical surface measurement; it says nothing about a deeper or stratified layer
  • Cause and effect on its own — to attribute a clarity change to a specific storm or river discharge you need rainfall or gauge data alongside

Code template (Python, cloud-direct)

Verified locally. The live OB.DAAC collection is MODISA_L3m_KD (the Kd_490 mapped product); each granule’s variable is Kd_490 in a global mapped NetCDF where latitude runs north→south, so slice lat=slice(N, S). Open lazily and slice your coastal box before reading. 8-day composites are a good first choice — cloud-tolerant and one file per read.

import os, re, earthaccess, xarray as xr, numpy as np

# load Earthdata creds from .env without `source` (passwords can break the shell)
for line in open(".env"):
    m = re.match(r'\s*(?:export\s+)?([A-Z0-9_]+)\s*=\s*(.*)\s*$', line)
    if m: os.environ.setdefault(m.group(1), m.group(2).strip().strip('"').strip("'"))
earthaccess.login(strategy="environment")   # free Earthdata Login

W, S, E, N = -91.5, 28.5, -89.0, 30.0       # your coast (Louisiana shelf / Mississippi plume)

results = earthaccess.search_data(short_name="MODISA_L3m_KD",
                                  temporal=("2024-05-01", "2024-05-31"),
                                  bounding_box=(W, S, E, N))

# pick a 4 km, 8-day Kd_490 composite (cloud-tolerant, one file per read)
g = next(r for r in results
         if "Kd_490" in r["meta"]["native-id"]
         and "4km"   in r["meta"]["native-id"]
         and ".8D."  in r["meta"]["native-id"])

ds = xr.open_dataset(earthaccess.open([g])[0])
kd = ds["Kd_490"].sel(lat=slice(N, S), lon=slice(W, E))   # lat is N->S in this grid
vals = kd.values[np.isfinite(kd.values)]
print("median Kd_490:", round(float(np.median(vals)), 3), "1/m",
      "  (clear ocean ~0.02-0.05, turbid coast >0.2)")   # -> ~0.41 1/m for this plume

# storm/runoff before-vs-after: rerun for a window before the event and one after,
# compare the medians, and trace how far offshore the murky water reaches
How a scientist answers this
Parameters
Diffuse attenuation coefficient at 490 nm (MODIS-Aqua `Kd_490`, units 1/m; ~0.02–0.05 clear open ocean, >0.2 turbid coastal), from the MODISA_L3m_KD 8-day Level-3 composites, with PACE OCI L3M as a newer cross-check and MUR SST (MUR-JPL-L4-GLOB-v4.1) for thermal/runoff context.
Method
Extract `Kd_490` over the coastal AOI, summarize each 8-day composite by median plus high percentiles (e.g. 90th) to capture plume cores, and compare pre-event vs post-event composites around a storm/flood; for trends, deseasonalize the monthly series and apply Theil–Sen + Mann–Kendall.
Validation
Apply Level-2/3 quality flags, mask cloud and sun-glint gaps, cross-check `Kd_490` against PACE OCI and in-situ turbidity/Secchi where available, and note that very-nearshore optically complex (Case-2) water can bias the standard algorithm.
In plain EnglishMeasure how fast light fades in the water (a clarity index) before and after a storm, and watch the median jump where the muddy river plume spreads.

Make it yours → Set the coastal AOI box, the before/after composite dates, and the percentile cutoff in the notebook.

Run the core method · no login

The robust trend (Theil–Sen + Mann–Kendall) 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).

editable · runs in your browser