Groundwater Discovery Portal

Map not loading? Open the app directly →

How to Use

  1. Zoom in to a district or catchment (zoom level ≥ 9 recommended)
  2. Adjust pillar weights if needed (Storage / Supply / Yield)
  3. Set the dry-season NDVI month for your region (default: September for Malawi)
  4. Click RUN to compute the Groundwater Potential Index
  5. Click any point on the map for a detailed diagnostic popup
  6. Toggle pillar layers in the Layers panel to understand what drives the score
  7. Enable Auto-stretch for better colour contrast at local scale

Methodology: Source–Pathway–Receptor Framework

The Groundwater Potential Index (GWPI) is grounded in the hydrogeological Source–Pathway–Receptor conceptual model, adapted for remote sensing in data-scarce crystalline basement terrains common across sub-Saharan Africa. Three independently normalised pillars (0–1) are combined using user-adjustable weights, then multiplied by a terrain constraint. The final score ranges from 0 to 10.

Why this framework? In crystalline basement aquifers, groundwater occurrence depends on three independent conditions being met simultaneously: there must be a receptor (porous weathered rock to store water), a source (enough rainfall minus evapotranspiration to recharge), and a pathway (fractures and transmissive materials to deliver water to a borehole). If any one is missing, the borehole will fail.

Storage

The Receptor — how much saturated weathered rock exists below the water table

Supply

The Source — is there enough climatic moisture surplus to recharge the aquifer

Yield

The Pathway — can the aquifer transmit water to a borehole via fractures and permeable soils

Constraint

Multiplicative penalty — steep/elevated terrain collapses the score to zero regardless of pillar values

Pillar 1: Saturated Storage Capacity (The Receptor)

In crystalline basement aquifers, groundwater is primarily hosted in the weathered regolith (saprolite). The thickness of this saturated weathered zone is the primary control on how much water the aquifer can store. We estimate this using two globally available datasets:

  • DTB (Depth to Bedrock, metres) — from a global 250 m dataset (Shangguan et al. 2017), tells us how deep the weathering goes
  • HAND (Height Above Nearest Drainage, metres) — from MERIT Hydro, tells us how far above the local water table a pixel sits

Why DTB − HAND?

A hilltop with 50 m of DTB may still be dry if it sits 60 m above the nearest stream (HAND = 60). Subtracting HAND from DTB estimates how much of the weathered zone is likely saturated — i.e., below the drainage base-level that approximates the water table.

DTB_minus_HAND = DTB − HAND Storage_raw = clamp(DTB_minus_HAND, 0, 200) // cap outliers Storage = log(1 + Storage_raw) / log(201) // 0 → 0, 200 → 1

Why log-normalise?

The raw difference has a long tail — some pixels show >150 m of potential saturated thickness. A linear scale would compress all the action into the low end. The log(1+x) transform compresses the tail while preserving better discrimination in the critical 0–50 m range where most boreholes operate. Dividing by log(201) ensures that 200 m maps to exactly 1.0.

Pillar 2: Climatic Supply Flux (The Source)

Groundwater recharge requires a moisture surplus after evapotranspiration is satisfied. We use two complementary proxies:

  • Aridity Index (AI) — Global Aridity Index v3.1 (FAO-56 Penman-Monteith reference ET). AI = P/PET, so higher values mean wetter conditions with more potential recharge
  • Upstream Drainage Area (UPA) — from MERIT Hydro (km²). Larger upstream areas funnel more water to convergence zones, concentrating recharge
AI_norm = unitScale(clamp(AI, 0.05, 1.5)) // climate moisture (0–1) UPA_factor = unitScale(clamp(log10(UPA), −2, 4)) // topographic concentration (0–1) Supply = AI_norm × UPA_factor // both must be favourable

Why multiply rather than add?

A wet climate (high AI) still won't deliver much recharge to an isolated ridge with tiny upstream area. Conversely, a huge catchment in a hyper-arid zone won't help either. The product ensures both conditions must be met — if either is near zero, Supply collapses.

Pillar 3: Yield & Transmissivity Proxies (The Pathway)

Even with adequate storage and recharge, the aquifer must be able to transmit water to a borehole. In crystalline basement terrains, this is controlled by fracture networks, soil permeability, and weathering intensity. We blend five sub-components:

Component Weight Source Rationale
FracturesN 28% Canny edge detection on MERIT elevation + 150 m Gaussian blur Heuristic proxy for lineaments and fracture damage zones (~100 m wide)
SoilTrans 28% SoilGrids v2: sand%, clay%, CFVO%, bulk density (depth-weighted 0–60 cm) Soil hydraulic transmissivity proxy — sandy, coarse soils allow more infiltration
TPIN 16% elv − focal_mean(elv, 250 m circle) Topographic Position Index — valleys and convergence zones collect water
NDVIN 16% Dry-season Sentinel-2 NDVI median (10 m, aggregated) Phreatophytes as biological sensors — trees that stay green in dry season are accessing groundwater
LithFactor 12% Neutral 0.5 constant (or GFV lithology if enabled) Lithological prior — does not drive results unless explicitly enabled

FracturesN — Lineament Heuristic

The Canny edge detector identifies sharp topographic breaks in the MERIT elevation surface that often correspond to fault traces and fracture zones. The result is convolved with a 150 m Gaussian kernel to simulate the ~100 m damage zone around each lineament where fracture permeability is enhanced. This is normalised to 0–1 using the range 0–0.30.

Limitation: These are heuristic lineaments derived from topography, not mapped geological faults. They correlate with real fractures in many settings but should always be validated against geological maps where available.

SoilTrans — Soil Transmissivity Proxy

Uses a depth-weighted average (0–60 cm) of four SoilGrids v2 properties to estimate soil hydraulic transmissivity:

SoilPerm = 0.45 × sandN // sand content ↑ = permeability ↑ + 0.20 × cfvoN // coarse fragments ↑ = macro-pores ↑ + 0.25 × (1 − clayN) // clay ↑ = permeability ↓ + 0.10 × (1 − bdodN) // bulk density ↑ = compaction ↑ = permeability ↓

NDVIN — Dry-Season Vegetation as a Biological Sensor

In the late dry season, most vegetation has senesced. Trees and shrubs that remain green are likely phreatophytes — species with root systems tapping shallow groundwater. Sentinel-2 NDVI is computed at 10 m resolution from a cloud-masked median composite, then aggregated and normalised (0.05–0.60 → 0–1). This is one of the most powerful signals in data-scarce settings.

Yield Combination

Yield = 0.28×FracturesN + 0.16×TPIN + 0.16×NDVIN + 0.28×SoilTrans + 0.12×LithFactor

Terrain Constraint: Rejecting the "Additive Fallacy"

Many groundwater potential maps use purely additive models. This creates a dangerous failure mode: mountainous terrain scores highly because fracture density and slope features add positive signal. But in steep rocky terrain, gravity moves water as surface runoff before it can infiltrate.

The Additive Fallacy: In an additive model, a mountain pixel might score: Fractures (high) + Slope feature (positive) + Soil (moderate) = Medium-High. This is dangerously misleading — that mountain sheds water as runoff, it does not store or transmit groundwater.

The solution is a multiplicative penalty that can drive the score to zero regardless of pillar values:

Penalty = exp(−0.15 × slope°) × exp(−0.1 × HAND_m)
Terrain Type Slope HAND Penalty Effect
Flat valley floor 2° 3 m ≈ 0.95 Pillars dominate
Gentle hillslope 8° 15 m ≈ 0.45 Moderate suppression
Steep hillslope 15° 40 m ≈ 0.07 Strong suppression
Mountain ridge 25° 80 m ≈ 0.001 Score ≈ zero

Final Score (0–10)

Score = 10 × (w_Storage × Storage + w_Supply × Supply + w_Yield × Yield) × Penalty Default weights: Storage 40%, Supply 30%, Yield 30% Weights are user-adjustable and normalised to sum to 1

The factor of 10 maps the 0–1 weighted sum into a more intuitive 0–10 range. The multiplicative penalty ensures that no amount of positive pillar signal can overcome genuinely unfavourable terrain.

Score Interpretation

Score Class Guidance
0 – 2.0 Very Low Low combined evidence. De-prioritise unless strong local knowledge exists.
2.0 – 3.5 Low Some signal, but weak. Cross-reference with borehole logs before acting.
3.5 – 5.0 Medium Promising. Identify which pillar(s) are driving the score and verify locally.
5.0 – 6.2 High Strong screening signal. Good candidate for geophysical survey + test borehole.
6.2 – 10 Exceptional Top-tier signal. Still verify geology, siting constraints, and water quality.
A high score is a hypothesis, not a guarantee. Always verify with the pillar layers (toggle them on in the map) and field data before investing in drilling. The index does not assess water quality (fluoride, arsenic, salinity).

Data Sources

  • MERIT Hydro v1.0.1 Elevation, HAND, Upstream Area — 90 m · Yamazaki et al. 2019
  • Depth to Bedrock (DTB) Global 250 m · Shangguan et al. 2017
  • Global Aridity Index v3.1 FAO-56 PM reference ET · ~1 km · Zomer et al. 2022
  • Sentinel-2 SR Harmonized 10 m multispectral · Copernicus / ESA · 2024–2025
  • SoilGrids v2 (ISRIC) Clay, Sand, CFVO, Bulk Density — 250 m · Poggio et al. 2021
  • FAO GAUL 2015 Administrative boundaries (national export only)

Limitations

  • Screening tool only — not a substitute for hydrogeological investigation, geophysics, or test drilling
  • Resolution ceiling: limited by the coarsest input (DTB and SoilGrids at 250 m)
  • Fracture proxy is heuristic — Canny edges on elevation are not mapped geological faults
  • Static climate proxy — Aridity Index is a long-term average, not year-specific recharge
  • Neutral lithology — LithFactor defaults to 0.5; geology does not differentiate the score unless GFV layers are enabled
  • NDVI seasonality — the dry-season month must be set correctly for each region (default: September for Malawi)
  • No water quality component — high index ≠ potable water (fluoride, arsenic, salinity not assessed)