Project 4 — Emergency Response Optimization¶
Difficulty
🟡 Intermediate. ~12–16 hours.
Goal¶
"What % of [your city]'s population can a fire or EMS unit reach within 4 minutes? Where would a new station have the biggest impact?"
NFPA 1710 (the US fire-service standard) calls for first-arrival within 4 minutes. This project measures whether your city meets it — and identifies underserved areas.
Data needed¶
| Layer | Source |
|---|---|
| Fire / EMS station locations | City open data, OSM amenity=fire_station |
| Road network | OSM (driveable), or ArcGIS Online travel modes |
| Population (block / block group) | TIGER/Line + Census |
| City boundary | Local open data |
Tools used¶
- Network Analyst — Service Area (4-minute drive-time polygons)
- Network Analyst — Location-Allocation (where to put new stations)
- Spatial Join, Tabulate Intersection
- ArcGIS Online travel modes (or local network dataset)
Workflow¶
Step 1 — Set up¶
- Project:
emergency_response_<city>. - Project to State Plane.
- Sign in to ArcGIS Online to use travel modes (or build a local network).
Step 2 — Service areas (current coverage)¶
- Analysis ribbon → Network Analysis → Service Area.
- Travel mode: Driving Time.
- Cutoffs: 4 min (and add 6, 8 for context).
- Add facilities: your fire stations.
- Run.
The output is a polygon per facility per cutoff. Dissolve all 4-min polygons into one "Within 4 minutes" coverage area.
Step 3 — Population coverage¶
- Add block-group population layer.
- Tabulate Intersection (Analysis Tools): zone = the 4-min polygon, class = blocks, sum field =
POP. - Output: total population inside the 4-min coverage.
- Compute % covered:
(pop_inside / pop_total) * 100.
Or use Spatial Join with Sum aggregation to get a similar result.
Step 4 — Identify gaps¶
- Erase the 4-min polygon from the city boundary → uncovered area.
- Spatial Join uncovered area with blocks → population in gaps.
- Symbolize uncovered tracts dark red. These are your priority gap areas.
Step 5 — Where to add a new station? (Location-Allocation)¶
- Generate candidate sites — e.g., a hex grid of 1 km cells in the uncovered area.
- Network Analysis → Location-Allocation.
- Demand points: block-group centroids weighted by population.
- Facilities: existing stations (Required) + candidate sites (Choose).
- Problem type: Maximize Coverage.
- Impedance cutoff: 4 minutes.
- Number of facilities: Existing + 1 (or +2).
- Run.
The chosen candidate(s) are the recommended new stations.
Step 6 — Symbolize¶
A two-frame layout:
- Map A — Current coverage: existing stations + 4-min polygon + uncovered population in red.
- Map B — Proposed coverage: existing stations + recommended new station + new combined 4-min polygon.
Show the uplift: "New station adds X,000 residents to 4-min coverage."
Step 7 — Layout / dashboard¶
A polished layout with:
- Title: "Fire Service Coverage and Optimization, [City], 2026"
- Two map panels (current vs proposed)
- KPI line: % covered before / after
- Methodology footer
Build an ArcGIS Online Dashboard version with toggle between scenarios.
Skills learned¶
- Network Analyst — Service Area, Location-Allocation
- Population coverage analysis
- Decision support / optimization
- Multi-scenario comparison
Portfolio value¶
This is the municipal favorite. Cities, counties, and consulting firms hiring for public safety GIS love this project — it directly mirrors a real procurement deliverable.
Stretch goals¶
- Use time-of-day traffic (rush hour vs off-peak service areas).
- Include incident data to weight demand by call volume, not population.
- Run scenarios with 1, 2, 3 new stations to find the marginal return.
- Build a Story Map showing the methodology and result.
→ Next: Migration & Housing Trends.