Skip to main content

Malaria Risk Module

The malaria risk module provides ward-level monthly risk predictions across Limpopo Province, South Africa, using satellite-derived environmental indicators.

Live module

Open the malaria dashboard: https://main.d1jko0jkg4m7f.amplifyapp.com/ → Malaria Risk Prediction


How risk is calculated

The malaria risk score is a composite of four environmental factors extracted from EO data:

FactorConditionPoints added
Soil Moisture> 0.35+40
Soil Moisture0.25 – 0.35+20
Surface Temperature25°C – 30°C+30
NDWI (water presence)> −0.1+20
Population Density> 300 /km²+10

Maximum score: 100

function calculateDynamicRisk(d) {
let score = 0;
if (d.Soil_Moisture > 0.35) score += 40;
else if (d.Soil_Moisture > 0.25) score += 20;
if (d.LST_Surface_C >= 25 && d.LST_Surface_C <= 30) score += 30;
if (d.NDWI_Water > -0.1) score += 20;
if (d.Population_Density_Per_KM2 > 300) score += 10;
return score;
}

Risk thresholds

ScoreRisk levelMap colour
≥ 50🔴 High#d93025
25–49🟡 Moderate#f9bb06
0–24🟢 Low#34a853

Dashboard features

Region selector

Drill down from province → municipality → ward:

  • Province: Currently fixed to Limpopo
  • Municipality: 9 municipalities including Greater Giyani, Ba-Phalaborwa, Greater Letaba, Maruleng, and more
  • Ward: All wards for the selected municipality in the selected month

Click Apply to fly the map to the selected ward and open its risk popup.

Time slider

The slider spans January 2025 to January 2026 (13 monthly snapshots). Moving the slider re-renders all map markers for the selected month.

const MONTH_DATA = [
{ id: 'Jan 2025', month: 'January', year: '2025' },
{ id: 'Feb 2025', month: 'February', year: '2025' },
// ... through ...
{ id: 'Jan 2026', month: 'January', year: '2026' }
];

Risk level filter

Filter the map to show only High Risk, Medium Risk, or Low Risk wards.

Environmental factors panel

When a ward is selected, the panel displays:

IndicatorSourceNotes
Habitat TypeESA WorldCoverLand cover class (tree cover, cropland, wetland, etc.)
Population DensityWorldPopPersons per km²
Agricultural AreaESA WorldCover Class 40% of ward under cultivation
Surface TemperatureSentinel-3 / LandsatLST in °C
Soil MoistureMODIS / Sentinel-1m³/m³ index

Dataset

PropertyValue
FileLimpopo_Risk_Jan25_Jan26_Safe.csv
Records7,384
MonthsJan 2025 – Jan 2026 (13 months)
CoverageLimpopo Province, South Africa
Municipalities9
SourceGoogle Earth Engine

See Datasets → for full schema and download instructions.


Habitat class codes

The Habitat_Class_Code field uses ESA WorldCover 2021 classes:

CodeDescription
10Tree cover
20Shrubland
30Grassland
40Cropland
50Built-up
60Bare / sparse vegetation
80Permanent water bodies
90Herbaceous wetland

Known limitations

  • Risk model uses EO-derived proxies for mosquito habitat — it does not incorporate direct vector counts or entomological surveillance data
  • Population density uses WorldPop estimates (not census-level ward data)
  • Soil moisture is approximated from optical and SAR indices, not in-situ measurements
  • The 25°C–30°C LST window is a simplified Anopheles optimum; actual transmission is influenced by many additional factors

Roadmap

PhasePlanned enhancement
Milestone 2Connect live GEE API for real-time monthly refresh
Milestone 2Add NICD case-count overlay
Milestone 3Validate risk scores against NICD malaria incidence data
Milestone 3Extend coverage to other high-burden provinces (KZN, Mpumalanga)