How We Mapped 847 Hectares of Flood Inundation in Accra's Odaw Basin Using Sentinel-1
By Samuel Appiah Kubi · 08 Jul 2026
On 27 June 2026, a major rainfall event caused widespread flooding across Accra's Odaw Basin — a 1,000 km² catchment draining through some of the city's most densely populated and economically vulnerable communities before discharging into the Korle Lagoon. Our satellite analysis, completed within 18 hours of the Sentinel-1 overpass, estimated 847 hectares of active inundation and identified 80,000 residents in Agbogbloshie at emergency risk level.
This post is an honest account of what it took to get there — including three bugs we did not discover until we were debugging zero-output results at 2am.
The Data Pipeline
We searched Copernicus Data Space for all Sentinel-1 GRD acquisitions over the Odaw Basin across 12 rainy seasons (April–July and September–November, 2019–2024). After fixing a collection name mismatch in the PyGeoFetch Copernicus provider — the OData API uses SENTINEL-1 as the collection name, not SENTINEL-1-GRD as the STAC catalog does — we recovered 183 usable acquisitions and downloaded one representative scene per seasonal window.
The Three Silent Bugs
Bug 1: CRS Identity Transform. After reprojecting Sentinel-1 scenes to UTM Zone 30N (EPSG:32630), three of our 183 scenes had pixel_width=1.0 and origin=(0.0, 0.0) — the identity geotransform. The files opened without error in QGIS. Every pixel was placed at the UTM zone origin, approximately 600 km into the Atlantic Ocean. Fix: validate the transform after reprojection and detect this pattern explicitly.
Bug 2: Partial Downloads. Two scenes appeared to download successfully (SHA-256 passed, file size looked correct) but contained only partial pixel data — the download had been interrupted at 60% and the remaining blocks were written as nodata. The file was syntactically valid GeoTIFF but spatially incomplete. Fix: read a test tile from each band immediately after download and fail explicitly if the tile is all-nodata.
Bug 3: WGS84/UTM Clipping Mismatch. We clipped scenes to the Odaw Basin boundary using a GeoJSON in WGS84. The rasters were in UTM (metres). rasterio.mask clipped to coordinates in the WGS84 range (approximately −0.3°, 5.5°) against a raster whose coordinates were in the 300,000s (metres). The result was an empty array. No error. Fix: always check that the CRS of the clip polygon matches the CRS of the raster before masking.
Results
After fixing the bugs, the flood frequency composite showed that Agbogbloshie and Alajo are flooded in more than 75% of rainy season acquisitions — meaning roughly 3 out of every 4 SAR passes over those communities during the rainy season shows active inundation. The 2026 event was within the expected envelope for a 3-year return period event.
The full pipeline code, including all bug fixes, is in pygeovision v2.0.9 pygeovision/data/processors/sar.py. The Accra flood intelligence notebook (NB09) is available under the Advanced courses on EOCoreINT.