Vision Zero DC Crash Map
Case study · Policy
A Public-Interest Traffic Safety Atlas for DC
- What
- A crash map and accountability scorecard for DC's Vision Zero program.
- Stack
- Leaflet over DC's live ArcGIS layer + a baked Python snapshot; Python and Node tests in CI.
- Status
- LIVE
- Dates
- Published June 2026 · Updated June 2026
- Links
- Live site · Source code
Background
Where are DC's crashes actually concentrated, who is getting hurt, and what does a decade of Vision Zero data reveal about the city's progress — or lack of it?
DC launched Vision Zero in 2015 promising zero traffic deaths by 2024, and missed. This tool scores that against the city's own baseline — deaths, and people killed or seriously injured — then maps where the harm concentrates, ward by ward and intersection by intersection. The underlying collision records from DDOT and MPD are technically public but sit in ArcGIS endpoints most people can't query. Recommendations pair each pattern with countermeasures carrying real crash-reduction figures, so the data points somewhere rather than only at the problem.
A Look Inside
Each view shown on mobile and desktop — tap any image to open the live site.
How It Works
Two pages, no build step, no backend server, no dependencies to install:
- Safety Overview: an accountability scorecard for deaths and KSI against the missed 2024 target, a yearly trend, a mode-share breakdown of who is being hurt, and the wards carrying disproportionate risk.
- Recommendations: evidence-backed policy moves with confidence scores, plus a countermeasure library citing crash-reduction figures from the engineering literature. Each card deep-links into the map with its filters applied.
- Crash Map: a Leaflet map querying DC's official ArcGIS layer live — filter by date, severity, mode, and moving violations; select any crash for its full incident case file.
- Shareable state: every filter combination is mirrored into the URL, so any view — a ward, a corridor, a severity band — is bookmarkable.
- Baked snapshot:
pipeline/snapshot.pywrites per-ward totals, fatalities, KSI, and exposure rates to a static JSON. Re-runs are idempotent; raw caches are gitignored. - Tested throughout: Python tests guard the pipeline's area math and sanity gates; framework-free Node tests cover severity scoring, triage weights, and URL round-trips. A failing test blocks the deploy.



