FloodGuard Accra — Knowledge Centre

How to use it, and exactly how every number is produced — the math, logic, data and law behind the tool · open the tool ›

What FloodGuard is — and is not

FloodGuard turns how sealed a place is into action: a flood-susceptibility read, a sealing/permit decision, a drainage levy, a de-sealing target, and a forward-looking flood early-warning — at the scale of a plot, a ward, or a whole district, with Ghanaian legal citations and open, auditable data.

It is a screening tool, not a hydrodynamic flood forecast. It maps where water is likely to collect and how much sealing is driving it. It does not predict flood depth or exact timing — that needs engineering models, surveyed drains and calibration data Ghana does not yet hold openly. Stating this plainly is what makes the rest trustworthy.
SystemWhat it does
🛰 Google Flood HubForecasts when & where rivers will flood (fluvial), 7-day.
🏗 GARID (World Bank)Builds the basin-scale Odaw drainage works.
🛡 FloodGuardParcel/district scale: sealing %, the pluvial flood-susceptibility map, permit decisions, the levy, the de-sealing target, and a planner early-warning — the layer neither of the above reaches.

Quick start — three steps

1
Find a place. Type an address in the “Find a place / area…” search, or click the map. A pin drops and the Location profile fills in — District Assembly, climate zone, flood proximity, district sealing.
2
Pick what you’re doing: assess a new plot (Citizen), an existing building (Existing building), screen a permit location (Assembly / Permit), or lodge/track a permit (Permit cases).
3
Read the verdict and the fixes. Every result leads with a plain-language takeaway and one action, then the detail (runoff, retention, heat, air, measures) and downloadable PDFs.

Who uses it & where to start

You are…Start withYou get
Citizen / developerCitizen tab“Is my plot too sealed? Will it flood? What do I do?” — a verdict + one fix + flood-proximity warning.
MMDA officerAssembly / Permit + Permit casesA point-bound statutory permit decision, the district de-seal target, the levy roll, an AMA Hydro Report PDF.
Politician / plannerDistrict card + Flood simulatorAn announce-able target (“de-seal X ha to contain a 50 mm storm”) and a validated flood-prone map.
CSO / press📋 Register + Flood simulatorA time-stamped public record of permit decisions and the sealing-vs-flooding evidence layer.

1 · Citizen plot owner / developer

Assess a single plot and get the cheapest way to make it compliant and flood-safe. Set the location, draw the plot (✏ Draw plot — it auto-detects sealing from OpenStreetMap footprints + ESA WorldCover at 10 m for the exact shape), optionally add tree canopy and a green façade, then read the Verdict:

Drawing (works on phone and desktop): tap or click the map to drop each corner of the boundary — a control appears at the bottom-right showing the point count with ✓ Finish, ↶ Undo and ✕ Cancel. ✓ Finish becomes available once you have 3+ corners and closes the shape. (On desktop you can still double-click, press Enter to finish, Backspace to undo a corner and Esc to cancel; on a phone use the on-screen buttons — there is no keyboard and double-tap zooms the map.)

Then read the Verdict: Sealed Surface Index vs the cap, runoff, required retention, heat (WBGT), air quality, and ranked measures. Download the Plot report, AMA Hydro Report, or Schedule of Permit Conditions PDF.

The verdict is three-way: meets the standard · within the sealing limit but needs on-site retention · over the sealing limit. A green/garden plot is never wrongly flagged.

2 · Existing building retrofit

For a building already up. Enter its GhanaPostGPS address and current surfaces and get: the de-sealing / on-site capture it needs, the stormwater levy now vs after retrofit, a costed two-route fix (de-seal or capture), and an owner notice you can issue by bill or SMS.

3 · Assembly / Permit MMDA

The planning officer’s screen. Click any plot to screen that location: a named proposed development + zoning check, a statutory REFUSE/REFER/NO STATUTORY BAR verdict bound to the District Assembly of the clicked point (point-in-polygon over ~260 districts), the location profile, the district sealing card + de-sealing planner, the before-the-storm read, and PDF outputs. Draw a parcel to measure sealing, a proposed building to simulate, or scan a whole ward.

4 · Permit cases MMDA

Lodge and track any permit through the statutory lifecycle (Act 925 / LI 2384): submission → processing fee → vetting → inspection → Technical Sub-Committee → Spatial Planning Committee → issuance. Seven permit types (development, planning, change of use, subdivision, demolition, temporary, signage), each with its own reference code, document checklist and inspections. A refusal can be appealed; an issued permit carries a validity/commencement clock and can be renewed. Every case gets a Development Climate-Resilience Score (0–100, grade A–E) and a numbered Schedule of Permit Conditions; an automatic EIA check (LI 1652) locks EPA clearance where required; committee actions are gated on quorum/majority with an audit trail. The applicant privacy notice (Act 843) is shown at collection and the register is officer-only.

Flood early-warning (for planners) planning

A forward-looking read of which areas are likely to flood in the forecast window — the planning analogue of GMet’s real-time My Flood Risk Accra app. It couples WHERE (the terrain susceptibility grid) with HOW MUCH / WHEN (a live rainfall + river forecast) and returns one early-warning level (low / moderate / high) plus pre-event and permit actions. For real-time street-level warning inside Accra it defers to GMet’s app. See the math in C · Flood susceptibility.

Flood map & rain simulator Greater Accra + national

Turn on 🌊 Flood-prone areas (rain simulator) from the map’s layer control. It shows a flood-susceptibility map (where water is likely to collect, from terrain + sealing) and a Rain slider (20–120 mm): heavier rain activates more area and the readout updates live. Validated blind against the recorded 2023–2026 flood register and, independently, the Global Flood Database (AUC 0.80). It is a screening pluvial-susceptibility map, not a depth forecast.

District de-sealing planner planners

On every district card, drag Contain storm (20–150 mm) and read how much de-sealing (or on-site retention) keeps that storm within the drainage design load. Set your own drain design mm and good-practice sealing %. The 🎯 headline gives an announce-able target; ⤓ District brief (PDF) exports a one-pager. The math is in F / B.

Reports & PDFs

ReportWhat it is
Plot reportSealing, runoff, retention, catchment, heat, measures for one plot.
AMA Hydro ReportThe drainage assessment a building permit requires (Bye-law 2017 / LI 1630) + the no-build gate.
Schedule of Permit ConditionsNumbered, cited, enforceable-once-adopted conditions + resilience score.
District briefTotal sealing + de-seal/retention target + provenance, one page.
Decision noticeIssuable Notice of Permit Decision with legal grounds + signature block.
Owner noticeRetrofit notice keyed to the GhanaPostGPS address (bill / SMS / print).

A · Sealing & the Sealed Surface Index (SSI) math

Every surface carries two independent properties: a runoff coefficient C (how much rain runs off) and an impervious fraction (how much infiltration/recharge it blocks). SSI prices sealing; C routes water — a green roof runs off little (low C) yet is still ~30 % “sealed” for SSI.

SSI = Σ (fractionᵢ × imperviousᵢ) — over the surface mix, 0–1 C = Σ (fractionᵢ × runoff_cᵢ) — area-weighted runoff coefficient green = Σ fractionᵢ for surface ∈ {lawn, garden, green_roof, rain_garden}
fractionᵢ = share of plot area in surface i; unassigned area is filled with bare_soil. Traffic-light band: SSI ≤ 0.75·cap → green; ≤ cap → amber; else red.

Surface coefficients (engine/constants.py · SURFACE_TYPES)

Surfacerunoff Cimperviousalbedo
Roof (metal/concrete)0.900.950.20
Asphalt / concrete paving0.880.980.12
Block paving (sealed joints)0.800.850.30
Gravel / compacted laterite0.500.400.25
Permeable paving0.450.300.30
Bare soil0.350.100.20
Lawn / grass0.250.00.25
Garden / dense veg / trees0.150.00.18
Green roof (extensive)0.450.300.25
Rain garden / bioretention0.100.00.20
Water / pond1.00.00.07

Satellite sealing & the NDVI vegetation discount (backend/impervious.py)

impervious% = builtup_fraction × 0.85 — ESA WorldCover built-up (class 50) veg = clamp((NDVI×100 − 10) / 45, 0, 1) adjusted% = impervious% × (1 − 0.45 × veg) — NDVI discount (Gutman–Ignatov FVC)
0.85 = built-up→impervious factor (fair for dense settlement, generous flat; the NDVI discount rescues leafy compounds ESA over-reads). Applied only when veg ≥ 0.08 and it reduces sealing by >1 point.

Sources: C values compiled from DIN 1986-100, cross-checked to Chow, Maidment & Mays (1988) & ASCE, adjusted up for Accra’s clay soils. ESA WorldCover 2021 v200 (10 m). NDVI = Sentinel-2 green-season median.

B · Runoff & hydrology (Rational Method) math

V = C × (depth_mm / 1000) × area_m² — event runoff volume, m³ Q = C × i × A → Q_Ls = C·(i_mmhr/1000/3600)·A·1000 — peak, L/s V_required = (retention_target_mm / 1000) × area_m² — on-site retention, m³
C area-weighted runoff coefficient · i design rainfall intensity (mm/hr) · A area (m²) · depth design-storm rainfall (mm). Net discharge = runoff − on-site retention (what still reaches the public drain).

Escarpment / catchment weighting (engine/runoff.py)

catchment_factor = 1.0 + 0.70·elev_norm + 0.50·slope_norm elev_norm = clamp((elev − 0)/(elev_max − 0), 0, 1) elev_max = 600 m (Aburi crest) slope_norm = clamp(slope_pct / 15, 0, 1) downstream_load_m³ = event_volume × catchment_factor
Range ≈ 1.0 (flat coast) → ≈ 2.2 (steep ridge). Applied only to the downstream contribution — plots higher on the Akuapem/Aburi escarpment load the Accra lowlands harder, so the same sealing uphill counts for more. A weighting index, not hydraulic routing.

Engineering-grade rational method (engine/hydrology.py)

Kirpich tc = 0.0195 × L^0.77 × S^−0.385 — time of concentration, min urban shortening: tc = max(5, tc × (1 − 0.55·impervious)) Sherman/Talbot IDF: i(t) = i_ref × ((15 + 10)/(t + 10))^0.78 design_peak: C_eff = min(1.0, C × Cf) Cf = frequency factor
L flow length (default 1.5·√area, m) · S slope (m/m, floored 0.5 %) · t duration (min). Cf (TR-55/ASCE): 2/5/10-yr = 1.0; 25-yr 1.1; 50-yr 1.2; 100-yr 1.25. tc floors at 5 min, so parcel-scale differentiation is conservative (over-sizes peak).

Design storms (representative — engine/constants.py)

Stormdepth (mm)peak i (mm/hr)
2-yr4560
5-yr6585
10-yr (default)85100
25-yr110125

Published IDF curves in the engine: Kumasi — Abubakari, Kusi & Xiaohua (2017), Int. J. Eng. & Sci. 6(1):51–56 (Gumbel, 22-yr GMet record); Volta/Weta — Asante-Annor, Oti et al. (2024), HydroResearch 7. Accra (Logah 2013) & Tarkwa remain zone-approximate (figure/paywall only). All depths are representative pending official GMet/HSD per-station curves.

C · Flood susceptibility & early-warning math

susceptibility = 0.45·HAND + 0.35·TWI + 0.20·impervious 0–1 m(P) = clamp(P / 60, 0.6, 1.7) — storm multiplier for rain P mm FloodPotential(P) = clamp(susceptibility × m(P), 0, 1)
HAND Height Above Nearest Drainage (low-lying land water drains toward) · TWI Topographic Wetness Index (where upstream area funnels water) · impervious the sealing that generates runoff. Bands: <0.30 low · <0.50 moderate · <0.70 high · else very high. Greater Accra read at 100 m; rest of Ghana at 250 m.

Other flood signals

  • Modelled river hazard — point-in-polygon over JRC Global River Flood Hazard maps (~928 m): 1-in-10-yr floodway → red, 1-in-100-yr floodplain → amber (engine/flood_hazard.py).
  • Dam-spillage — Haversine distance to curated dam corridors (Weija, Akosombo/Kpong, Bagre, Bui, Tono, Vea) with an elevation ceiling (engine/dams.py).
  • Recurrent register — documented 2023–2026 corridors + REGSEC communities; “documented history only — absence is not proof of safety”.
  • Topographic position — centre elevation vs a ~350 m ring of DEM neighbours: ≤ −3 m ponding-prone; low-confidence where local relief < 2 m (DEM noise). Position, not flow routing.

Planner early-warning (backend/earlywarn.py)

Couples the terrain susceptibility grid (WHERE) with layered free forecasts (WHEN/HOW-MUCH): riverine = Google Flood Forecasting API (Flood Hub, 7-day); pluvial = NASA GPM IMERG if a token is set, else Open-Meteo. Forecast peak rainfall (clamped 20–120 mm) activates the grid; the level escalates from the pluvial flag (notable ≥ 30 mm, heavy ≥ 50 mm), the activated susceptibility band, the riverine severity, and a low-lying topographic amplifier → low / moderate / high with pre-event + permit actions.

Sources: MERIT Hydro (~90 m, HAND/TWI); JRC/GloFAS (Dottori et al. 2016); Open-Meteo (Copernicus DEM); Google Flood Hub; NASA GPM IMERG. Screening — not a hydrodynamic depth/extent forecast.

C2 · Rainfall × sealing → flood (how much rain an area can take) math

Answers: for a given rainfall and how sealed an area is, how much runoff results — and how much rain can it take before it floods? Uses the established SCS / NRCS Curve-Number method (backend/engine/floodcurve.py). Because the Curve Number rises with sealing, a more-sealed area turns more of the same rain into runoff and floods at a lower rainfall depth.

CN(SSI) = CN_pervious + SSI × (98 − CN_pervious) CN_pervious = 80 (Accra clay, HSG-D) S = 25400 / CN − 254 (mm) potential maximum retention Q(P) = (P − 0.2S)² / (P + 0.8S) for P > 0.2S runoff depth (flood-intensity proxy), mm
SSI sealed fraction 0–1 · P rainfall depth (mm) · Q runoff the drains must carry. The rainfall threshold = the P whose runoff Q first exceeds the drainage design depth (~25–30 mm) — above it, surface flooding begins. It falls as sealing rises: ~67 mm at 20 % sealed → ~40 mm at 90 %. That is the "more sealing → less rain to flood" relationship, derived from first principles.

Wired into the adaptation simulator: each scenario shows the threshold shift, e.g. "this area floods at ~45 mm now → ~52 mm after de-sealing". Endpoint GET /api/floodcurve returns the point read + the full threshold-vs-SSI curve. Anchored (not fitted) by the documented 3 June 2015 event (212.8 mm on a highly-sealed core → ~196 mm runoff).

Honesty: a screening, contributing-factor relationship — not attribution. Accra's flooding is also driven by drainage capacity, solid-waste + silt blocking the Odaw, wetland/floodplain encroachment, and tidal back-up at the Korle outlet — confounders this two-variable curve omits by design. It runs keyless from first principles; an optional Earth-Engine script can add satellite-observed event anchors.

Sources: NRCS TR-55 (Curve-Number); Hollis 1975 (imperviousness × flood magnitude); Blum et al. 2020 (confounding); Logah et al. 2013 (Accra IDF); NOAA Accra extreme-rainfall report (2015 event).

C3 · Adaptation / scenario "what-if" simulator math

The 🌿 Adapt tool predicts the flood + heat effect of blue-green / nature-based measures applied at a chosen scale (parcel → ward → district), driven by SSI (backend/engine/scenario.py). It builds on physical parameters (storage mm/m³, impervious fraction, albedo, canopy) and derives the runoff reduction through the Rational Method at the local storm — it does not hard-code temperate reduction percentages (they collapse under Accra's intense convective storms).

SSI_after = (sealed_area − Σ sealed_removed) / area runoff_after = C(SSI_after) · P/1000 · area − Σ on-site retention (m³) ranking: m³ retained per 1,000 GHS · °C WBGT relief per 1,000 GHS
Measures: extensive / intensive / retention / blue roofs, permeable paving, bioretention, underground storage (m³), de-sealing, trees, cool roofs, wetland/buffer restoration. Each carries an evidence flag (tropical / transferred / derived) and a note.

Accra clay rule (enforced): Akuse vertisols + a high water table make infiltration unsuitable, so every soakaway/infiltration measure is modelled as lined detention needing a drainage outfall, never ground infiltration. Output includes the cost, the cost-effectiveness ranking, and the verdict "does it bring the area within the ~25–30 mm drainage design capacity?". Endpoints GET /api/scenario/catalogue + POST /api/scenario/simulate. Full cited basis: docs/SCENARIO_ENGINE_RESEARCH.md.

Sources: FLL / DIN 1986-100 (retention roofs); CIRIA C753; global bioretention meta-analysis (2025); Ziter et al. 2019 & Konijnendijk 2023 (canopy cooling); EPA Cool Roofs; Asare, Atun & Pfeffer 2023 (NbS in Accra, Land Use Policy). Screening — not a hydrodynamic simulation.

Adaptation as a permit prerequisite (the gate)

The simulator is wired into the permit lifecycle so a required remedy becomes a condition of grant, not just advice. When a lodged development exceeds the Assembly sealing cap or falls short on on-site retention — on declared sealing only (an assumed default is advisory, never a block) — the case shows an ⛔ Adaptation required card. The officer clicks Build compliant plan: the 🌿 Adapt simulator opens seeded from and locked to that plot (area + SSI fixed), the officer adds measures until the gap closes, then Attach as permit condition.

On attach, the engine is re-run server-side (the officer cannot understate the plot). The plan is satisfied only if it closes the exact on-site-retention deficit that triggered it and — where sealing was the trigger — brings the resulting SSI within the cap. The Spatial Planning Committee approval / issuance is blocked (HTTP 409) while a required plan is unmet; clearing the plan re-blocks the grant. Every attach is audit-logged. Endpoint POST /api/applications/{id}/adaptation; enforced in transition_application (Gate 5), triggered from backend/permitconditions.py.

D · Heat, WBGT & cooling math

WBGT = 28.5 + 4.0·SSI·(1−canopy) − 2.5·canopy − 1.0·green + 1.5·(0.25 − albedo) clamped to [24, 36] °C screening index ΔT = 4.5·SSI·(1−canopy) − 2.5·green − 2.0·canopy + 3.0·(0.25 − albedo) clamp [0, 6]
SSI sealed index · canopy tree-canopy fraction · green green-surface fraction · albedo mean surface reflectance (ref 0.25). WBGT bands (ISO 7243-style): <28 low · <30 moderate · <32 high · else extreme. This is a screening WBGT for acclimatised moderate outdoor work — not a measured or PET/UTCI value.

Felt temperature & cooling recommender

NWS/Rothfusz heat index and ECCC humidex are computed at local_Ta = 31 °C + ΔT (Accra design). The 🌳 Cooling prescription greedily chains the strongest tropical levers — tree canopy → reflective cool roof (albedo 0.60) → green roof — until WBGT drops into a safe band, each step with its °C drop and indicative cost (canopy 25, cool-roof 90, green-roof 550 GHS/m²).

Sources: EN ISO 7243:2017 (Class-2 acclimatised limit 28 °C); NWS WPC heat index; ECCC humidex. Tropical LST asphalt–grass differences 10–20 °C → near-surface air offset ~2–5 °C (calibration basis).

E · Air quality / phytoremediation math

annual_removal = Vd × C_ambient × leaf_area × active_seconds leaf_area = green_area × LAI CO₂ = green_area × 2.0 kg/m²/yr cars_equiv = NO₂_kg / 0.6
Vd deposition velocity · C_ambient pollutant concentration (µg/m³) · LAI leaf-area index (green façade 4.0, green roof 2.0, garden 3.0). NO₂ active 10 h/day; PM2.5 24 h × a 0.5 retention factor (rest resuspends).
ConstantValueBasis
Vd NO₂0.30 cm/sHedera chamber; Delaria et al. 2020 ACP (0.15–0.51 cm/s stomatal)
Vd PM2.50.15 cm/sleaf-scale; corrected down from 0.5 (was over-stated ~3–10×)
Ambient (Accra)NO₂ 45 · PM2.5 37 µg/m³per-zone (regions.py); exceeds WHO 10 / 5
Façade greening cost320 GHS/m²indicative vertical greening

Method & sources: Aduse-Poku et al. (2024), Environmental Advances 17:100568; (2025), Springer Urban Ecosystems 28:76. Ambient from Arku et al. (Accra) and Ghana fixed-site studies. Model-air feeds (Open-Meteo/CAMS) under-read Accra badly, so were deliberately not wired.

F · Stormwater levy & fees math

surcharge = max(0, SSI − cap) × area × rate × catchment_factor area basis = max(0, SSI − cap) × rateable_value × 0.5%/yr × catchment_factor value basis net = surcharge − rebate rebate 150 GHS if SSI ≤ cap AND retention ≥ required
A split stormwater-fee model (German gesplittete Niederschlagswassergebühr): a property that seals more — and over-seals uphill (catchment factor) — contributes more to drainage upkeep; a compliant one earns a rebate. Rides the existing property-rate bill. Default rate 3 GHS/m² of excess sealing/yr. Illustrative — the Assembly sets the real tariff.

Permit fees (engine/fees.py)

processing = max(50 GHS, construction_cost × 0.625%) — starts the statutory clock permit = floor_area_m² × rate_per_m² res 6 · comm 12 · ind 14 · inst 8 · mixed 10 GHS/m²

Sources: LUSPA Act 925 s.116; LI 2384 Regs 44–45; calibrated to the Ga West Municipal Assembly 2024 Fee-Fixing Resolution (residential 6 GHS/m² ≈ gazetted GHS 822 for ~137 m²); World Bank Accra processing 0.625 % / GHS 50 floor. Retrofit unit costs (permeable 180, depave 60, rain garden 120, green roof 550 GHS/m²; soakaway 900, cistern 1200 GHS/m³) — illustrative.

G · Permitting & statutory logic math

Compliance (engine/mitigation.py)

compliant ⇔ SSI ≤ cap AND retention_provided ≥ retention_required

A “compliant” verdict is a screening pass, provisional on a site percolation test — the first-flush infiltration credit is optimistic on Accra’s clay soils. Caps (residential 0.60 SSI / 25 mm retention; commercial 0.80/20; industrial 0.85/20; mixed 0.70/22; stricter on the Akuapem uplands).

Resilience score & Schedule of Conditions (backend/permitconditions.py)

resilience = Σ(sub·weight) / Σweight weights: flood .35 · drainage .25 · sealing .20 · heat .20 sealing sub = 100 − 250·max(0, SSI − cap) drainage sub = 100·provided/required grade: ≥80 A · ≥65 B · ≥50 C · ≥35 D · else E
Withheld SSI drops the sealing sub-score and an unresolved flood gate scores a penalising 50, so non-disclosure can’t beat honest disclosure. Conditions are numbered, each cited to its instrument (raised plinth ≥ 600 mm, on-site detention ≥ required m³, tree canopy ≥ 30 %, cool-roof SR ≥ 0.60, green ≥ 20 %) — drafted to be enforceable and proposed for adoption by the Spatial Planning Committee.

Statutory refusal gate (backend/permitgate.py)

REFUSE on a hard prohibition (wetland/Ramsar LI 1659/Act 1115; riparian buffer Act 522 + WRC policy; forest reserve; road reservation Act 540/925/LI 2384/1630; transmission/rail wayleave Act 541/779; dam/river flood Act 925/927). REFER on a soft red (coastal, recurrent flood, slope, contamination). NO STATUTORY BAR otherwise. If the land screen is unreachable it returns screening_required — never a false “clear”.

Satellite riparian safety net (fixes the adjacent-to-water false-clear)

The watercourse/wetland layers key off OSM waterway lines + WDPA polygons, which miss informal ponds and unmapped wetlands — so a plot sitting next to open water could clear. FloodGuard now also scans the ESA WorldCover 10 m satellite around the point for open water (class 80) and wetland (90/95): nearest ≤ 75 m → REFER (likely inside the WRC riparian buffer; Act 522 + Buffer Policy + LI 1659 cited), ≤ 150 m → advisory. Kept soft (never an automatic refusal — 10 m can misclassify pools/shadows; an Assembly may elevate it). Limit (stated honestly): 10 m satellite catches open water — it misses narrow streams and dry-season / vegetated wetlands, so it narrows, not closes, the gap; always verify the water body on the ground.

Land tenure — State / institutional land (backend/landtenure.py)

Much peri-urban green survives because it is state / institutional land — University of Ghana, Achimota, military, research stations, teaching hospitals, statutory bodies — not because of any hydrological rule. A curated national layer (77 holdings, indicative boundaries, shared with the EPA scoping tool) flags when a point falls on such land. The verdict depends on the Applicant type AND whether the land is already developed:

  • Government / institution-serving development → REFER (must be formally allocated by the custodian + Lands Commission first).
  • Private on OPEN / undeveloped state land (e.g. University farmland) → REFUSE — not privately developable without release by the custodian; building on it is encroachment.
  • Private on already-DEVELOPED state land (≥55 % built — e.g. Airport City, a hospital campus, a bank on leased ministry land) → REFER, not refuse: existing development implies a custodian lease/allocation already exists, so a private transaction is a title/lease-verification matter, not automatic encroachment. (This is why a check near an already-built landmark returns "refer/verify", not a claim that the existing building is illegal.)

Cited to the State Lands Act (Act 125), Lands Commission Act (Act 767), Land Act 2020 (Act 1036) + the custodian's statute. Boundaries are indicative, not cadastral — there is no open institutional-land cadastre in Ghana; the layer can slightly over-reach onto adjacent commercial land, so always confirm with the Lands Commission (Public & Vested Lands Division) / the custodian's Estate Office.

Land status & conservation value (backend/landstatus.py + conservation.py)

A classifier answers "why is this land still open?" by combining the tool's layers into one headline: institutional (tenure applies whether built or not) → built (already developed) → open water / wetlandflood-prone valley floorvacant developable, each with its own recommendation. For protected, still-green land it then runs a conservation valuation — the existing flood + heat + air engines on the current vegetated state vs a fully-sealed counterfactual — to show what the district loses if it is sealed: extra runoff per design storm & per year (with tanker / Olympic-pool equivalence), local WBGT rise, and annual NO₂ / PM2.5 / CO₂ removal forgone (Aduse-Poku deposition-velocity method) with a cars-off-the-road equivalence. Screening valuation to support KEEPING green — the counterfactual is explicit (full sealing to typical development), not an engineering or monetary appraisal. GET /api/land-status?lat&lon.

Zoning & EIA

Zoning uses the gazetted scheme first, else a nationwide OpenStreetMap observed-land-use layer (indicative → an OSM non-conforming is a REFER, never an auto-REFUSE). EIA screening (LI 1652): factories/industry & fuel depots mandatory; hotels > 40 rooms, warehouses/commercial ≥ 5000 m², offices ≥ 10000 m², large housing ≥ 8000 m²; anything in a sensitive area (Schedule 5) mandatory → EPA clearance locked before grant.

Lifecycle clocks (backend/permitflow.py)

Service-level target 30 working days (LI 2384 Reg 44(10)); deemed-approval ~3 months (LI 1630 / Act 925 regime — confirm the exact instrument before relying on it). Both start at processing-fee payment. Permit validity 5 yr (LI 1630 Instrument 7). Committee actions gated on quorum (TSC 2, SPC 3) + majority.

H · Climate scenarios & national coverage math

storm_depth = depth_today × (1 + climate_uplift) uplift clamped 0–1
Basis: IPCC AR6 / Clausius-Clapeyron ~7 %/°C → +20–30 % mid/high-century for West Africa. A screening scalar, not a downscaled projection.
Climate zone10-yr depth/peakannual mmNO₂/PM2.5IDF source
Greater Accra (coastal savanna)85 / 10078045 / 37Logah 2013
Western wet (Takoradi/Axim)112 / 135190020 / 28Tarkwa
Forest Ashanti (Kumasi)105 / 122140028 / 30Abubakari (published)
Transition (Sunyani/Techiman)95 / 115125018 / 30scaled
Northern savanna (Tamale/Wa/Bolga)100 / 132105014 / 50scaled convective
Volta (Ho/Hohoe)92 / 112115014 / 28Weta 2024 (published)

Zone resolved by lat/lon classifier else GhanaPostGPS prefix. All zone IDF representative pending official GMet/HSD curves.

National map layers

The overlays under the 🗺️ Map layers control that make the national picture legible:

  • 🔥 Heat-island intensity — Landsat surface temperature rendered as a local anomaly (each pixel vs its ~7 km surroundings), so hot built-up / bare cores read red and cool green/water blue in every city — not just the hottest region (a fixed 24–46 °C absolute stretch washed out intra-city differences). Skin temp, not air; dry-season median. −6…+8 °C vs local average.
  • 🏗️ Settlement growth — year each area was first built-up, with a 🎞️ timelapse slider to watch a place develop. The animation uses the WSF remote-sensed series (1985→2019, annual) — the accurate progression that shows where the city expanded. (JRC GHSL reaches 2025 but back-casts development to 1985 and misses dense old cores, so it is used only for the 🇬🇭 National dashboard's built-up km² aggregate — 1,138→2,059 km², 1.81× since 2000 — not for the per-pixel animation.) The timelapse shows first urbanisation, not later redevelopment of already-built land.
  • 🗺️ District / Assembly boundaries — all 261 MMDAs (hover for the name + region); Guan District (2021) is sourced from OpenStreetMap since it postdates the global ADM2 sets.
  • Plus flood-susceptibility (national + Accra-fine) and development-on-flood-prone-land overlays, each with its own legend.

I · Early Warning & the alerting console math

Two linked surfaces that turn the analysis into action. The Early Warning board (/earlywarning.html) answers what is coming, when, and who it hits. The alerting console (/console.html) is where an authorised body decides what to say about it. They are deliberately separate: the board can be open in an operations room, while the power to issue stays behind the console's review chain.

Where the forecast comes from

  • Riverine — Google Flood Forecasting API (Flood Hub), up to a 7-day horizon. FloodGuard reads the gauge inventory, each gauge's warning / danger / extreme-danger thresholds, its current severity and trend, and the full forecast time series. Requires FLOODGUARD_FLOODHUB_KEY; without it the board says so plainly and the other two layers keep working.
  • Pluvial — Open-Meteo rainfall forecast (free, no key), banded at 30 mm/day (notable) and 50 mm/day (heavy).
  • Terrain — the existing HAND/TWI/impervious susceptibility grid, which says where water collects regardless of what falls.

Lead time — the number decisions are made on

Severity says a flood is coming. Lead time says how long you have, and it is the figure an evacuation or drain-clearing decision actually turns on. It is computed as the hours from now until the forecast series first crosses a gauge threshold:

lead = min over crossed thresholds of ( tfirst crossing − tnow )

Two rules matter, and both exist because getting them wrong misreports urgency:

  • The value in effect now is the timestep whose interval contains now, not the next one starting in the future. Forecast timesteps rarely align with the clock, so a naive "future only" test skips the current step and reports the next crossing — telling an officer they have 12 hours while the river is already over its danger level.
  • The headline lead is the soonest crossing, not the highest. A gauge already above danger that reaches extreme in 12 h is dangerous now; the 12 h is an escalation, not a grace period. The board reports "already at or above danger; reaches extreme in 12 h".

Threats are ranked by severity first, then by soonest-acting — a severe gauge peaking in six hours outranks an extreme one peaking in five days, because the six-hour one is the one still open to action.

Who is exposed

Each threat is snapped to the MMDAs it speaks for (the containing assembly plus any within a 35 km influence radius, because a river does not stop at a boundary). For each we report built-up land in the susceptible band (settlement grid × flood susceptibility ≥ 0.55, sampled on a lattice clipped to the district) and permits this authority holds there — something no other early-warning product knows. Population is deliberately not reported: no gridded population layer is bundled, and a guessed headcount in an evacuation decision is worse than an honest blank. Ingesting GHS-POP would enable it.

Targeting the affected area (catchment, not district)

When Google is actively forecasting a flood at a gauge it publishes the predicted inundation extent — the actual area water is expected to reach. FloodGuard fetches that polygon (KML, decoded to a lat/lon ring) and uses it as the alert geometry, so a warning drafted from the board targets the catchment the flood will hit, not the administrative district it happens to sit in. The MMDA is kept as the human area description and the list of who is affected. When no extent is published — a gauge not currently in flood — targeting falls back to the district boundary, and the alert says which of the two it used. The board draws the extent on the map (hatched red) so an officer sees the real footprint before drafting.

Who may warn — the mandate matrix

FloodGuard does not warn anybody. It drafts; an authorised Ghanaian body decides, signs off and issues on its own channels. The console refuses to let an operator issue outside its own mandate:

  • GMet — meteorological warnings (rain, storm, wind, heat). Ghana Meteorological Agency Act, 2004 (Act 682). Also Ghana's national CAP-authoring authority under the WMO/NOAA CAP implementation.
  • Hydrological Services Department — riverine, coastal and dam-release hydrology. Departmental mandate, Ministry of Works and Housing.
  • NADMO — disaster warning, public alerting and evacuation; the broadest mandate. NADMO Act, 2016 (Act 927).
  • MMDA — local action within its own area. Local Governance Act, 2016 (Act 936). An assembly may issue a local action notice freely, but a public flood warning asserts a hydrological forecast that is not its mandate — it needs a co-signature from GMet, HSD or NADMO. This is the single most likely way a well-meaning assembly accidentally competes with the national warning voice, so it is enforced in code.

The review chain

draft → submitted → authorised → dispatched, with cancel and all-clear. Enforced at every step:

  • A named officer for every step — while the analysis tools stay open for the adoption phase, warning the public is never an open-access action. Reading the board is open; drafting, authorising, dispatching, cancelling an alert or forcing a feed poll all require a real, logged-in officer, so every move in an alert's life has a person against it.
  • Two-person rule — the drafter cannot authorise their own public alert. Open-access preview cannot satisfy it at all, and says so rather than pretending.
  • One dispatch, even under a race — if two officers press dispatch at the same instant, an atomic database transition lets exactly one through; the other is turned away before anything is sent, so a warning is never pushed twice.
  • Unverified translations block dispatch — local-language blocks are machine-drafted seeds, marked unverified, and a named speaker must confirm the wording before a public alert can go out. A mistranslated evacuation instruction is worse than no translation.
  • Every alert must carry an instruction and an expiry. An alert that says what is coming but not what to do does not change behaviour; one that never expires becomes a false alarm accumulating silently.
  • Full chain of custody — who drafted, who confirmed each language, who authorised, who dispatched and on which channels, and what the outcome was.

CAP 1.2 — why FloodGuard is not another warning channel

Alerts are emitted as OASIS Common Alerting Protocol 1.2 (ITU-T X.1303bis) at /api/alerts/{id}/cap.xml, indexed by a CAP-over-RSS feed at /api/alerts/feed.xml. Ghana is standing CAP up nationally through GMet with WMO and NOAA, so emitting CAP means the authority's existing dissemination rail consumes FloodGuard's output unchanged. Element order follows the CAP schema sequence; polygons are emitted lat,lon and closed as the standard requires; the evidence (forecast peak, susceptibility band, gauge severity, engine version) travels with the message as CAP <parameter> entries so an after-action review can see what it rested on. FloodGuard does not send SMS or broadcast — dissemination stays on the authority's rail.

Delivery — pluggable, dormant by default

Dispatching an alert marks it live, mints the CAP document and records the channels the authority used. If the authority configures an automated delivery channel, dispatch also pushes the alert on it — otherwise nothing is sent and the receipt says so plainly. FloodGuard never carries a default sending account:

  • Area broadcast (the safe default). A webhook provider POSTs the CAP 1.2 document to an endpoint the authority runs — its CAP aggregator or cell-broadcast gateway. It targets an AREA and carries no personal data, which is how a public warning should work.
  • SMS to a list. Gateway providers (Hubtel, mNotify) are wired to fire the moment the authority's credentials are set. Because a phone list is personal data, it is accepted only from a logged-in officer who confirms the numbers were collected with consent (Data Protection Act, 2012 (Act 843)); without both, the SMS path refuses rather than guesses.
  • Honest receipts. Every dispatch records what actually went out — provider, status (sent / not-configured / skipped / failed) and detail — visible in the console and the audit trail. The console shows up-front whether pressing Dispatch reaches anyone or only records intent, so the button never implies delivery it cannot perform.

Skill: what is proven and what is not

  • Spatial skill — measured, independent. Global Flood Database (Tellman et al. 2021), AUC 0.80, 95% detection. The grid puts flooding where flooding is observed.
  • Operating point — the planning threshold is not an alerting threshold. At the screening value of 0.45 the false-alarm rate is ~51%: correct for deciding whether a permit needs a drainage condition, ruinous for public warning. The console publishes the full threshold sweep and recommends 0.55 for public dispatch (~67% detection, ~32% false alarm), keeping 0.45 for internal action notices. Youden's J is flat across that range and weights a miss and a false alarm equally — public warning does not, so the quieter end is chosen deliberately.
  • Forecast timing skill — NOT established. Whether an alert fires on the right day cannot be shown from historical flood extents, because no archive exists of what the forecast said beforehand. FloodGuard therefore writes one: a background poller records every riverine observation and stitches consecutive polls into flood episodes carrying their first detection, so median lead time becomes measurable. Until episodes accumulate the tool reports "not yet established" rather than borrowing credibility from the spatial validation.

Demonstration mode

Because the Flood Forecasting API key is issued per Google Cloud project after a manual enablement step, the board can run on built-in example gauges (DEMO_MODE file at the repo root, or FLOODGUARD_FLOODHUB_FIXTURE=1). Whenever it is on, a red DEMONSTRATION DATA banner runs across the top of the board. A live key always wins over demo mode, and the marker is never deployed to production.

Reliability & operations

Because this is a life-safety surface, availability is treated as a first-class concern:

  • Quota-protected. The endpoints that reach Google Flood Hub are per-caller rate-limited (30 requests/min) so no burst of traffic can exhaust the forecasting API's request budget and take the board offline. The heavy calibration computation and the public CAP feed are throttled too. Gauge and threshold reads are additionally cached in-process (minutes to hours by data type) to keep normal use well inside the budget.
  • Fail-loud, never fail-quiet. If the riverine feed is unavailable — no key, upstream error, or the key's project loses access — the board says so in a red banner and falls back to the always-on rainfall-forecast and terrain layers. A quiet board because the feed is off never looks like a quiet board because the country is dry.
  • Self-maintaining record. The background poller archives the forecast every 30 minutes (Google keeps no history for us) and prunes raw observations older than 45 days on each run; the durable lead-time record lives in the flood-episode table and is kept indefinitely, so the database stays bounded over a full season.
  • Restricted credential. The forecasting key is locked to the server's own IP addresses, so even a leaked key is useless from anywhere else.

J · Economic damage & benefit-cost math

Everything above answers where and how likely. This answers how much it costs — the only currency in which a drainage budget, a levy rate or a retrofit grant is actually argued. A district engineer cannot take “high susceptibility” to a finance committee; they can take “this measure avoids GHS 43,000 of damage a year for GHS 20,000”.

The depth-damage curve

Damage is a function of still-water depth, expressed as a fraction of what the asset is worth. FloodGuard uses the JRC global depth-damage functions (Huizinga, de Moel & Szewczyk 2017, EUR 28552 EN, doi:10.2760/16510) — the same functions behind the World Bank and JRC global flood risk assessments — taking the Africa continental curves and interpolating linearly between the published depths:

Depth0.5 m1.0 m1.5 m2.0 m3.0 m4.0 m
Residential0.220.380.530.640.820.90
Industry0.060.250.400.490.680.92
Agriculture0.240.470.740.921.001.00

Industrial floors tolerate a shallow flood better than homes; a crop is a total loss well before a building is. The curves encode both.

What a square metre is worth

FloodGuard reproduces JRC's own published Ghana values, by JRC's own formula: construction cost from the GDP-per-capita power law, then ×0.60 depreciation, ×(1−0.40) for the undamageable part of a concrete or masonry building, then ×(1+contents). That gives residential 207.41, commerce 316.39 and industry 286.85 €/m² (2010) — matching the published figures to five decimal places.

This was wrong in the first build and the correction is large. The earlier version multiplied construction cost by contents and skipped the two middle terms, giving 577.5 €/m² for a home — 2.8× too high — and that error went straight into every benefit-cost ratio the tool produced. The chain is now computed in code from the published coefficients rather than hard-coded, and a test asserts it reproduces JRC's own values, so it cannot silently come back.

Every building value carries JRC's 90 % confidence interval — for residential, −28 % to +53 %. These are screening figures, and a number quoted without that band claims a precision the source does not have.

How it is built changes what it is worth

Nowhere more than in Accra. JRC publishes material and settlement factors to be applied by the analyst, so FloodGuard asks rather than assuming formal concrete construction:

How it is builtResidential €/m² (2010)
Formal — concrete / masonry207.41
Informal settlement / slum43.21
Mud walls69.14
Corrugated sheet124.45
Rural69.13
Low value is not low priority — and the tool says so every time. These factors change what a building is worth, not how easily it breaks. JRC notes that mud buildings suffer total loss from about 1 m of water, far sooner than concrete, so the Africa curve — built on formal South African and Mozambican housing — is too shallow for informal construction, and no Africa curve exists for it. The report also notes the human impact may be relatively higher where coping capacity is lower. An eightfold cut in value, used without that framing, would make protecting informal Accra look eight times less worth doing. Every informal or mud result returns this warning attached to the figure.

Cropland is not valued like a building

A flood does not write off a field the way it writes off a building — it destroys one season's production. So cropland's maximum damage is Ghana's annual agricultural value added, 431.27 €/ha → 0.0431 €/m² (2010), with no depreciation, no undamageable fraction and no contents ratio. It is an annual flow, not a capital stock, so it is never depreciated over a service life. Every response states which basis it used, because the two are not interchangeable.

Expected annual damage (EAD)

A single flood figure is not a risk. EAD integrates damage against annual exceedance probability p = 1/T across the return periods supplied, by the trapezoidal rule:

EAD = Σ ½ · (Di + Di+1) · (pi − pi+1)

Both tails are excluded by default, and this matters. An earlier build assumed damage fell to zero at p = 1 (annually). That single unstated assumption contributed half the EAD and pushed the answer to an incredible 10 % of asset value per year, with a benefit-cost ratio of 81 and a 0.1-year payback — numbers a real engineer would reject on sight. The frequent tail is now only integrated when the caller states the return period at which flooding actually begins (damage_threshold_return_period), and the rare tail beyond the worst scenario supplied is never extrapolated. EAD is therefore biased low, and every response says so in its bias field.

Benefit-cost

A measure is valued as the expected annual damage it removes, discounted over its service life, against what it costs: benefit-cost ratio, net present value and payback. This ranks options against each other; it is not a substitute for a full economic appraisal.

The default rate is 6 %, after the World Bank's own Greater Accra Resilient and Integrated Development appraisal (P164330) — the closest comparator there is, same city and same hazard. Ghana prescribes no discount rate: Act 921 and L.I. 2411 require a positive economic net present value but name no figure, and the Ministry of Finance's 2024 appraisal manual cites 12 % as a general developing-country default, as does the African Development Bank for Ghana. Because the choice is contestable and changes the answer, the result is always shown with a sensitivity across 3 / 6 / 12 %.

An earlier version of this page attributed 8 % to "Ghana Ministry of Finance appraisal practice". That attribution was wrong and has been withdrawn — checking the primary sources found no such figure in any Ghanaian instrument. It is recorded here rather than quietly deleted.

The rate must be a real rate. Benefits are held in constant present-day cedis and never escalated, so a nominal cost of capital would count inflation twice. And because the cedi figure is an assumed exchange rate away from a euro damage, the benefit-cost ratio is directly proportional to that rate — the same measure flips from "does not pay" to "worth doing" between 11 and 16.5 GHS/€. The rate used is shown with every result.

What this engine refuses to do

  • It will not invent a depth. FloodGuard's hazard layer produces a susceptibility band, not metres of water. Depth is an input — from a scenario, a hydraulic model or an inundation map — never an output. Ask for damage without a depth and the endpoint returns 400.
  • It will not substitute a curve. JRC publishes no Africa curve for commerce, transport or infrastructure. Rather than silently borrowing the European one — the easiest possible route to an indefensible number — those classes are refused, and the response names the three classes that are available.
  • It flags its own assumptions. Cost inflation since 2010 (×1.55) and the EUR→GHS rate (16.5) are assumptions, not sourced figures, and travel with every result that uses them.
  • It states its evidence base honestly. These are transferred, uncalibrated functions; no Ghana-specific damage function exists, and the industrial class may rest on a single South African study. Every output is an order-of-magnitude screening estimate and says so.

Where you actually use it

In the adaptation simulator — the panel that already told you what a measure costs and how much runoff it cuts, but never what it saves. Run a scenario and the “Is it worth building?” card appears beneath the result with the cost already filled in. Give it the floor area, what the building is, and the flood depth at two or more return periods, and it returns damage avoided per year, the value over the measure's life, the benefit-cost ratio and the payback.

You supply the depth — the tool will not. FloodGuard's hazard layer gives a susceptibility band, not metres of water. Honest depth sources are a drainage or hydraulic study, a published inundation map, or the flood marks people can point to on their own walls. “Depth after” is your design intent — what you expect once the measures are built — not a FloodGuard prediction. And a single flood is not a risk: the card refuses to answer on fewer than two return periods, because an annual average cannot be worked out from one event.

Endpoints: /api/damage/provenance (read this first), /api/damage/parcel, /api/damage/ead, /api/damage/benefit.

Data sources (open & auditable)

LayerDataset · resolutionProvider / year
Total imperviousnessESA WorldCover built-up ×0.85 · 10 m COG / 100–250 m gridESA 2021
Vegetation discountSentinel-2 green-season NDVICopernicus
Building roofsOverture / OpenStreetMap footprintsOSM
Flood susceptibilityMERIT Hydro (HAND/TWI) + ESA WorldCover · ~90 m0.45·HAND+0.35·TWI+0.20·imperv
River-flood hazardJRC Global River Flood Hazard · ~928 mCopernicus/GloFAS, Dottori 2016
Flood validationGlobal Flood Database (MODIS) · 250 mTellman et al. 2021, Nature 596:80
Settlement growthWSF Evolution 1985–2015 (30 m) + WSF 2019 (10 m); GHSL GHS-BUILT-S 2000–2025 surface (100 m)DLR/ESA, Marconcini 2020 · JRC GHSL R2023
Elevation & rain forecastCopernicus DEM (~30 m) via Open-Meteo; NASA GPM IMERGCopernicus / NASA
Depth-damage functions & asset valuesJRC global depth-damage functions, Africa curves + Ghana construction costsHuizinga et al. 2017, EUR 28552 EN, doi:10.2760/16510
Riverine forecastGoogle Flood Forecasting API (Flood Hub) · 7-dayGoogle
Districts (261 MMDAs)geoBoundaries ADM2 (260) + Guan District from OpenStreetMapgeoBoundaries · OSM
Soil textureWoSIS/SoilGrids via SafeGroundISRIC
HeatLandsat 8/9 LST (dry-season median), mapped as a heat-island anomaly (LST − ~7 km local mean); + ERA5 felt-heat gridNASA/USGS · ECMWF
Ambient airArku et al. & Ghana fixed-site studiespublished

Validation (honest, non-circular)

Out-of-sample skill: tested blind against the independent Global Flood Database (Tellman et al. 2021, MODIS 2000–2018, 16 Ghana events), the susceptibility screen scores AUC 0.80 nationwide, with equal skill inside (0.80) and outside (0.80) Greater Accra and 95 % detection at the 0.45 precautionary threshold (mean susceptibility 0.68 on flooded pixels vs 0.47 on controls). It independently flags 82 % (23/28) of the recorded 2023–2026 Accra flood corridors as high-susceptibility.

An independent literature audit (§8z of the methodology) corroborated the Kumasi IDF to the digit, verified the Rational Method and both heat-index formulas numerically, and confirmed all 11 runoff C values sit within ASCE/DIN ranges. The engineer’s audit (§10) checked SSI, C, Q=CiA, V=CPA, Kirpich, the zone flood index and the levy for dimensional consistency.

Scope & limitations (please read)

  • Decision-support screening, not an engineering drainage/structural design — it supports the Spatial Planning Committee, it does not replace it.
  • The flood-susceptibility map is a screening read (where water collects); not a hydrodynamic depth/extent forecast. Hydrodynamic routing, surveyed drain capacities and an official validated DEM remain genuine data gaps.
  • Rainfall IDF depths are representative until official GMet / Hydrological Services Department curves are licensed.
  • Zoning scheme, fees, levy tariffs and some bye-law figures are illustrative until each Assembly loads its gazetted scheme and Fee-Fixing Resolution.
  • Calibration is strongest for Greater Accra; national coverage uses representative figures.
  • A “compliant” retention verdict is provisional on a site percolation test on clay soils.

Glossary

SSISealed Surface Index — % impervious cover.
CRunoff coefficient — fraction of rain that runs off.
HANDHeight Above Nearest Drainage — how low the land sits vs where it drains.
TWITopographic Wetness Index — where water accumulates.
Pluvial / FluvialRain-on-ground flooding / river flooding.
IDFIntensity–Duration–Frequency rainfall curve.
tcTime of concentration — how long runoff takes to reach the outlet.
WBGTWet-Bulb Globe Temperature — outdoor heat-stress metric (here, a screening index).
VdDeposition velocity — how fast a pollutant is captured by leaf surface.
LAILeaf Area Index — m² of leaf per m² of ground/surface.
MMDAMetropolitan / Municipal / District Assembly.
SPC / TSCSpatial Planning Committee / its Technical Sub-Committee.
AUCArea Under the ROC Curve — a 0.5–1.0 skill score (0.80 = good).

FAQ

Does it predict that my house will flood?

No. It tells you whether your area is flood-prone (terrain + sealing) and whether you’re near a recorded flood corridor, and it can give a forecast-window early-warning. For live river-flood forecasts, follow the Google Flood Hub link in the tool.

Where do the numbers come from?

Every formula, constant and data source is in the Methods & the math sections above, with its file location and citation. Nothing is a black box.

Is the levy a new tax?

No — it’s optional, Assembly-controlled, sealing-based cost-recovery on the existing property-rate bill. The Assembly sets the tariff.

Do I need an account?

No. The analysis tools are open. Officer/committee actions and the PII register require an officer sign-in (Data Protection Act 2012).

Contact / request a demo

FloodGuard Accra is developed by Minka Aduse-Poku, PhD (urban climate & green infrastructure).

📞 0547370075  ·  ✉ a.minka@yahoo.com  ·  🌐 floodguard.resilicity.com

This Knowledge Centre is generated from the live engine and is updated whenever the tool changes. Screening decision-support, not an engineering drainage design or a hydrodynamic flood forecast.