Civic Sims
An ArcGIS Pro add-in that runs three city simulations, road closures, station coverage and a river flood, on real Cedar Rapids map data.
- Status
- Simulation prototype
- Stack
- Simulation · ArcGIS · C#/.NET · GIS · Routing
At a glance
- Outcome: An ArcGIS Pro add-in with three turn-based city simulations on real public map data: road and bridge closures, fire and EMS station coverage, and a river flood response. Cedar Rapids, Iowa is the test city.
- Status: Simulation prototype, started October 5, 2026. All three sims run in ArcGIS Pro 3.7 on real Cedar Rapids data in a Windows VM, and every action works in each. Every sim draws from one shared color table. My own play-through checks come next.
- Role: Solo. Defined the sims, rules, data sources and decision records; reviewed AI-assisted implementation.
- Validation: 115 tests: 83 for the rules engine and 32 for the data importer, run against a downtown Cedar Rapids extract. Drive times match Esri’s Network Analyst within 30 seconds in 47 of 50 tracts, with a median difference of 0 seconds.
- Stack & libraries: C#, .NET 8, ArcGIS Pro SDK 3.6, NetTopologySuite, ProjNet, SQLite/GeoPackage, xUnit; OpenStreetMap, FEMA flood maps, TIGER/Line, ACS, USGS and NCES data.
- Source: Private.
- Limitations: Drive times assume free-flowing traffic with no turns or signals. Each tract’s people sit at one point. Costs, times and score weights are first guesses.
Civic Sims turns ArcGIS Pro into a set of city simulations played on a real city’s map. It grew out of Permit Office, and keeps that game’s rule: the simulation never touches ArcGIS code. Each sim has its own clock. You act, press Tick, and the map redraws to show the result.
In network disruption, each tick is five minutes. You close or reopen roads and bridges and move or stage crews, and the score tracks how long people wait for a fire crew. It counts the minutes beyond the four-minute national response goal. A second run with the same seed and no player actions sets the bar to beat. In service coverage, each tick is a budget year. You open, close or move fire, EMS, police and hospital stations, and the score weighs reach, fairness between neighborhoods and money left. In flood response, each tick is an hour. A river rises, crests and falls, and you order evacuations, open school shelters and close roads early.
The engine is a plain .NET library that also runs its tests on Linux. A separate importer packs each city’s roads, stations, tracts, flood zones and schools into one map database file. The engine does its own route finding on the road network. On 9,889 junctions and 24,475 road segments, a search from all 19 stations takes under a millisecond at the median. FEMA flood maps have no timeline, so the flood rises through three zones in order, and any road that touches water closes. In Pro, each tick redraws only what changed. The largest flood step redraws 4,070 shapes in 176 milliseconds.
All three sims run on real Cedar Rapids data today. Next come hands-on play-throughs of each sim.
SCREENSHOTS




