{"generated_at":"2026-09-05T03:00:17.152617Z","tile_name":"S2C_MSIL2A_20260901T100021_N0512_R122_T31NEH_20260901T151614","tile_date":"2026-09-01T10:00:21.025000Z","capture_date":"2026-09-01","tile_id":"T31NEH","cloud_cover_pct":78.54,"valid_pixel_pct":39.63,"location_count":15,"locations":[{"name":"Ikeja","lat":6.4531,"lng":3.3958,"deviation_sigma":-0.51,"risk_label":"NORMAL","baseline_mean":-0.0551,"baseline_std":0.0306,"baseline_sample_count":10,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":30.0,"ndwi_index":0.4125,"ndwi_mean_1km":-0.0707,"ndwi_median_1km":-0.0683,"ndwi_p90_1km":0.0886,"valid_pixel_pct_1km":93.08,"pixel_count_1km":37605,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.4125,"ndwi":-0.0756},{"name":"Lekki Phase 1","lat":6.4698,"lng":3.5852,"deviation_sigma":-0.48,"risk_label":"NORMAL","baseline_mean":-0.1326,"baseline_std":0.0512,"baseline_sample_count":10,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":40.0,"ndwi_index":0.3131,"ndwi_mean_1km":-0.1571,"ndwi_median_1km":-0.1234,"ndwi_p90_1km":-0.0368,"valid_pixel_pct_1km":83.88,"pixel_count_1km":33887,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.3131,"ndwi":-0.0614},{"name":"Apapa","lat":6.375,"lng":3.41,"deviation_sigma":1.3,"risk_label":"ELEVATED","baseline_mean":0.1265,"baseline_std":0.0421,"baseline_sample_count":18,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":83.3,"ndwi_index":0.712,"ndwi_mean_1km":0.181,"ndwi_median_1km":0.1849,"ndwi_p90_1km":0.2199,"valid_pixel_pct_1km":98.77,"pixel_count_1km":39905,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"HIGH","flood_risk":0.712,"ndwi":0.1695},{"name":"Agege","lat":6.5244,"lng":3.3792,"deviation_sigma":null,"risk_label":null,"baseline_mean":-0.11,"baseline_std":0.0378,"baseline_sample_count":6,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":null,"ndwi_index":null,"ndwi_mean_1km":null,"ndwi_median_1km":null,"ndwi_p90_1km":null,"valid_pixel_pct_1km":0.21,"pixel_count_1km":84,"low_confidence":true,"capture_date":"2026-09-01","risk_label_legacy":null,"flood_risk":null,"ndwi":null},{"name":"Lagos Island","lat":6.428,"lng":3.4219,"deviation_sigma":-0.18,"risk_label":"NORMAL","baseline_mean":-0.1213,"baseline_std":0.021,"baseline_sample_count":15,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":40.0,"ndwi_index":0.3484,"ndwi_mean_1km":-0.1252,"ndwi_median_1km":-0.0994,"ndwi_p90_1km":-0.024,"valid_pixel_pct_1km":79.15,"pixel_count_1km":31979,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.3484,"ndwi":-0.0532},{"name":"Ikorodu","lat":6.5958,"lng":3.3419,"deviation_sigma":null,"risk_label":null,"baseline_mean":-0.0901,"baseline_std":0.0403,"baseline_sample_count":5,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":null,"ndwi_index":null,"ndwi_mean_1km":null,"ndwi_median_1km":null,"ndwi_p90_1km":null,"valid_pixel_pct_1km":0.05,"pixel_count_1km":20,"low_confidence":true,"capture_date":"2026-09-01","risk_label_legacy":null,"flood_risk":null,"ndwi":null},{"name":"Obalende","lat":6.4355,"lng":3.4512,"deviation_sigma":-0.78,"risk_label":"NORMAL","baseline_mean":-0.0365,"baseline_std":0.0839,"baseline_sample_count":12,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":8.3,"ndwi_index":0.375,"ndwi_mean_1km":-0.1022,"ndwi_median_1km":-0.0906,"ndwi_p90_1km":0.055,"valid_pixel_pct_1km":99.95,"pixel_count_1km":40381,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.375,"ndwi":-0.0174},{"name":"Oshodi","lat":6.4965,"lng":3.3501,"deviation_sigma":null,"risk_label":null,"baseline_mean":-0.0587,"baseline_std":0.0331,"baseline_sample_count":7,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":null,"ndwi_index":null,"ndwi_mean_1km":null,"ndwi_median_1km":null,"ndwi_p90_1km":null,"valid_pixel_pct_1km":0.0,"pixel_count_1km":0,"low_confidence":true,"capture_date":"2026-09-01","risk_label_legacy":null,"flood_risk":null,"ndwi":null},{"name":"Victoria Island","lat":6.4475,"lng":3.5479,"deviation_sigma":-0.51,"risk_label":"NORMAL","baseline_mean":-0.1033,"baseline_std":0.0261,"baseline_sample_count":9,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":33.3,"ndwi_index":0.3584,"ndwi_mean_1km":-0.1165,"ndwi_median_1km":-0.08,"ndwi_p90_1km":-0.0076,"valid_pixel_pct_1km":100.0,"pixel_count_1km":40401,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.3584,"ndwi":-0.1502},{"name":"Mushin","lat":6.5133,"lng":3.3624,"deviation_sigma":null,"risk_label":null,"baseline_mean":-0.0726,"baseline_std":0.0334,"baseline_sample_count":5,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":null,"ndwi_index":null,"ndwi_mean_1km":null,"ndwi_median_1km":null,"ndwi_p90_1km":null,"valid_pixel_pct_1km":0.0,"pixel_count_1km":0,"low_confidence":true,"capture_date":"2026-09-01","risk_label_legacy":null,"flood_risk":null,"ndwi":null},{"name":"Alimosho","lat":6.4621,"lng":3.2854,"deviation_sigma":-0.11,"risk_label":"NORMAL","baseline_mean":-0.1502,"baseline_std":0.0283,"baseline_sample_count":10,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":40.0,"ndwi_index":0.3173,"ndwi_mean_1km":-0.1532,"ndwi_median_1km":-0.1113,"ndwi_p90_1km":-0.043,"valid_pixel_pct_1km":88.6,"pixel_count_1km":35797,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"MODERATE","flood_risk":0.3173,"ndwi":-0.1843},{"name":"Lagos Mainland","lat":6.4123,"lng":3.4687,"deviation_sigma":0.81,"risk_label":"NORMAL","baseline_mean":0.1334,"baseline_std":0.0495,"baseline_sample_count":19,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":78.9,"ndwi_index":0.704,"ndwi_mean_1km":0.1733,"ndwi_median_1km":0.2085,"ndwi_p90_1km":0.2342,"valid_pixel_pct_1km":98.02,"pixel_count_1km":39601,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"HIGH","flood_risk":0.704,"ndwi":0.1902},{"name":"Epe","lat":6.6087,"lng":3.5299,"deviation_sigma":null,"risk_label":null,"baseline_mean":-0.2408,"baseline_std":0.0654,"baseline_sample_count":7,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":null,"ndwi_index":null,"ndwi_mean_1km":null,"ndwi_median_1km":null,"ndwi_p90_1km":null,"valid_pixel_pct_1km":0.0,"pixel_count_1km":0,"low_confidence":true,"capture_date":"2026-09-01","risk_label_legacy":null,"flood_risk":null,"ndwi":null},{"name":"Ajah","lat":6.3865,"lng":3.5341,"deviation_sigma":0.85,"risk_label":"NORMAL","baseline_mean":0.1134,"baseline_std":0.0661,"baseline_sample_count":16,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":81.2,"ndwi_index":0.7,"ndwi_mean_1km":0.1695,"ndwi_median_1km":0.1728,"ndwi_p90_1km":0.1968,"valid_pixel_pct_1km":75.85,"pixel_count_1km":30646,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"HIGH","flood_risk":0.7,"ndwi":0.1928},{"name":"Ketu","lat":6.5423,"lng":3.3901,"deviation_sigma":-1.53,"risk_label":"NORMAL","baseline_mean":-0.03,"baseline_std":0.0366,"baseline_sample_count":7,"baseline_reliable":true,"weak_baseline":true,"percentile_vs_history":0.0,"ndwi_index":0.3941,"ndwi_mean_1km":-0.086,"ndwi_median_1km":-0.0676,"ndwi_p90_1km":-0.0242,"valid_pixel_pct_1km":72.18,"pixel_count_1km":29160,"low_confidence":false,"capture_date":"2026-09-01","risk_label_legacy":"LOW","flood_risk":0.3941,"ndwi":-0.2691}],"data_age_days":36.3,"stale":true,"baseline_month":9,"status":"under revision - not for operational use","data_quality":{"usable_neighborhoods":10,"total_neighborhoods":15,"citywide_valid_pixel_pct":39.63,"weak_baselines_this_month":0,"baselines_this_month":0,"median_baseline_sample_count":null},"field_descriptions":{"status":"This index is UNDER REVISION and NOT VALIDATED against observed flood events. Do not use for operational flood response. See status field.","known_limitations":"(1) The index has never been validated against any observed Lagos flood. (2) In v2 (2026-09-05) every neighborhood coordinate was corrected after an audit found 14 of 15 v1 coordinates were in the wrong district (5-49 km off), and 3 sat in open water. Permanent-water masking is now applied uniformly to every scene so land readings never mix with lagoon reflectance. (3) Optical satellites do not see rapidly-draining urban street flooding even after these fixes. (4) The full 11-year history was re-backfilled against the corrected coordinates and land-only pixels; whether any detectable flood signal survives in that corrected record is the question this revision is trying to answer.","deviation_sigma":"Standard deviations above (+) or below (-) this neighborhood's own historical mean land-only masked NDWI for the capture month. Historical baselines rebuilt against v2 coordinates.","risk_label":"Tier derived from deviation_sigma: NORMAL (<1sigma), ELEVATED (1-2), HIGH (2-3), EXTREME (>=3). null when low_confidence is true. The tier NAMES imply flood risk that we cannot yet support with evidence.","weak_baseline":"true when this neighborhood's baseline for the current month rests on <25 scenes.","ndwi_index":"Raw wetness index in (0, 1); sigmoid of masked NDWI on LAND pixels only. NOT calibrated against observed floods and NOT a probability.","flood_risk":"Alias of ndwi_index. Kept for backward compatibility.","land_pixel_count":"Number of pixels in the 1 km sample window that survived BOTH the SCL cloud mask AND the permanent-water mask. Absolute count, not a percentage. Low_confidence trips at <5000 (=0.5 km^2 of usable land).","low_confidence":"true when land_pixel_count < 5000. Absolute floor so waterfront neighborhoods are not permanently flagged.","stale":"true when data_age_days > 7 (roughly one Sentinel-2 revisit cycle + margin)."}}
