Flood-resilience status
What's at stake
New York is committing billions in capital funds to defend neighborhoods from flooding. Here's where that money stands today — and how many projects sit in the city's most flood-vulnerable ground.
Where the flood-resilience dollars go
Spend by category
Full ranking
Flooding vs. flood funding
Most flood-burdened districts
FLOOD DEPTH
How TIDELINE was built
TIDELINE connects where New York floods to where the city commits its flood-resilience capital dollars — down to the community-district level — and replays a real flash-flood. Everything below documents the data, the joins, and the judgment calls, including where a number is a measured fact versus a modeled estimate.
1 · Data sources
All inputs are open datasets (NYC snapshot 2026-06-24; MTA static GTFS):
- Capital Projects Database (CPDB) — Points — one geolocated point per capital project (geography).
- NYC Climate Budgeting Report (~260k rows) — every funding line with climate-alignment ratings, tracking categories, vulnerability indices, fiscal year, and dollar amount (money + flood ratings).
- Community Districts — 71 district polygons.
- FloodNet — 453 street-flooding sensors + 2,448 measured flood events (depth, duration, per-event time series).
- MTA Subway & Bus GTFS (static) — scheduled timetables, routes, shapes, and stops for the storm animation.
2 · Connecting projects to spending
Join. CPDB maprojid (e.g. 039LQMTGRMS) and the budget's
Project Id (e.g. 035 L21FREEZE) are the same agency-prefixed code with a
stray space, so we join on a whitespace-stripped, uppercased key. This matches
2,161 of 2,747 CPDB projects (the rest aren't tracked as climate investments).
One snapshot, to avoid double-counting. The report contains three publication snapshots; the same dollars appear in each. Every figure uses the single latest snapshot — FY2026 Executive Budget (published 05/12/2026). Amounts are USD thousands, formatted to $M/$B.
Flood definitions (from the budget's own ratings): a project is
flood-aligned if Flood Resiliency ∈ {Aligned, Aligned Component};
flood-vulnerable if Flood Vulnerability Index = true; the category breakdown
sums spend by Flood Resiliency Tracking Category.
3 · Flood funding vs. flood burden (Districts)
This is the dashboard's headline equity claim, so it carries the most interpretation. The unit is the
community district (FloodNet's CommunityBoard and the districts' BoroCd
share the same borough-prefixed coding, so they join directly).
- Flooding burden = count of measured FloodNet flood events per district (robust, intuitive). 52 of 71 districts have ≥1 event.
- Flood funding = flood-aligned $ assigned to each district by point-in-polygon (Shapely; multipoint projects use their centroid).
- Adequacy gap =
fund − need, where each is normalized 0–1 against the citywide max. Negative ⇒ floods more than its funding share suggests.
| Status | Rule | Meaning |
|---|---|---|
| Underfunded | gap < −0.15 | High flooding, comparatively low flood funding |
| Balanced | −0.15 … 0.15 | Funding roughly tracks flooding |
| Well-funded | gap > 0.15 | Flood funding outweighs measured flooding |
| No data | 0 events | No FloodNet-measured flooding to compare |
4 · The May 20, 2026 storm
Flooding (measured). We replay every FloodNet event on 2026-05-20 — 105 events across 97 sensors, peak depth 46 in, up to 68 sensors flooding at once (~23:35 GMT) — by interpolating each sensor's depth time series along a storm clock. Rain density tracks the live intensity.
Subway & bus movement (scheduled, not a live replay). MTA real-time feeds are present-tense only and the static GTFS calendar doesn't reach a past date, so we apply the weekday timetable to that Wednesday and animate trains/buses along their real routes and stops: ~10,500 subway trips (with route geometry) and ~11,000 bus trips (thinned from ~65k citywide for performance).
Disruption flags (a proximity heuristic). A line is flagged when one of its stops sits within ~300 m of a sensor flooding above 12 inches (track-level) at that moment — 12 subway lines (peak 8) and 33 bus routes (peak 26). It flags service near flooding; it does not alter movement and is not a record of actual MTA service changes that night.
Read this before quoting the numbers
Treat the equity finding as a screening signal, not a verdict. FloodNet coverage is uneven, so event counts partly reflect where sensors are, not only where flooding is worst. Funding is attributed by a project's mapped point, which may not be where its benefit lands (a sewer or coastal barrier protects beyond its centroid). Normalization is relative to the citywide max, and figures reflect a single budget snapshot. Transit motion and disruptions are scheduled/modeled, not live recordings.
5 · Credits
This project was a combined effort between David A. Lee, Dean Berkowitz, and Lyndsey Kaplan for the State Capacity and AI Hackathon hosted on June 24, 2026 at the CUNY Graduate Center. Many thanks to the organizers and judges for their incredible work in orchestrating this wonderfully fun event!
file://. Serve the folder:python -m http.server 8000 → open http://localhost:8000