描述
At the hackathon this Saturday, we're going to focus on a tool to explore 15 minute neighborhoods. There's been lots of press about these lately.
The vision: An open source tool to understand not only how walkable a place currently is, but also what it might take to improve things. Bring in land use and census data, to figure out what areas are in the most need of easier access to some amenity, and what buildings/land parcels might be eligible to become multi-use.
Inspiration:
- https://blog.conveyal.com/access-in-seattle-fb5ef952c3ae
- https://app.developer.here.com/15-min-city-map/
- https://www.remix.com/
- https://www.open-accessibility.org/
To my knowledge, GOAT is the only open source tool to explore 15 minute cities.
Relation to A/B Street
Ideally this new tool would be spun off from A/B Street. Similar to the new OpenStreetMap viewer mode and a few others, there are an increasing number of experiments not related to the core gameplay, but leveraging lots of the same code. Focusing on 15 minute neighborhoods is a much simpler problem than traffic simulation -- milestones are much easier to reach if solving gridlock and modelling lane-changing properly isn't a prereq. :) Until some of the technical issues are solved to split the code into pieces better, this new 15-minute experiment will just be a mode accessible from the main screen.
Right now, A/B Street the game focuses on improving trip times as its score. People don't change their trip modes based on map edits. As we move more towards the direction of measuring overall mobility / access to useful stuff and figure out how to model mode choice changes, I think some of the ideas/code from the 15-minute tool could start to converge with the game.
Tasks and ideas
The code lives here: https://github.com/dabreegster/abstreet/tree/master/game/src/devtools/fifteen_min
Design / non-programming
- UI mocks -- what should the panel look like for controlling the basic functionality?
- how to display/organize information about the commercial amenities available?
- how should we visualize population density near a building?
- how should we visualize land use / zoning codes to understand what buildings might host new stores?
- organize raw OpenStreetMap amenities into better categories
Core isochrone algorithm
- make the isochrone implementation return time, not distance
- hard: handle PathConstraints::{Bike, Car} (then select these through the UI)
- make the isochrone implementation floodfill out, instead of calculate O(n) paths
- medium: filter out results > 15 minutes
- hard: stop the Dijkstra's floodfill > 15 minutes (more efficient)
- hard: generate polygons exactly between two thresholds
- easy: generate more exact costs for buildings in the middle of a sidewalk by adding in distance from the intersection
- hard: consider calculating isochrones differently -- per side of the road?
- https://wiki.openstreetmap.org/wiki/Isochrone#Technical_details
Basic UI:
- easy: switch maps using
CityPicker - easy: click a building to re-center the isochrone
- easy: add a
ColorLegendto the panel and label the 5, 10, 15 minute marks - easy: add an "About" button with a popup explaining the tool
- medium: as you hover over a building, draw a tooltip with the time to get there
- medium: as you hover over a building, draw the route from the start to that building
Add detail to the UI:
- medium: count amenities in the reachable buildings, display summary/breakdown in the UI panel
- hard: count free / total parking spots within the walkshed
- hard: count population density, based on what the scenario data says
Summary tools to understand an entire city without having to check an isochrone everywhere:
- very hard: sample buildings in an entire map, find areas that are / are not 15 min neighborhoods
- very hard: food deserts: calculate and visualize things like number of people not within 15 minutes of a grocery store
Bring in more data layers to understand potential for change:
- very hard: import zoning/land use maps from KCGIS, add a layer to show this
- very hard: a-b-street/abstreet#116 - bring in equity/demographic info, show it from isochrone UI
Let people make changes to the map to affect the isochrones:
- very hard: let players "upzone" some buildings and define what types of amenities they'd want somewhere. update isochrone accordingly. not sure if this should be expressed through map edits or not
- very hard: calculate differential isochrones across changes like upzoning; same walkshed, but update the scores?
More unsorted ideas:
- custom walking speed
- allow walking on the shoulder, or require actual sidewalks
- penalize crossings that're likely to take a bit (waiting for a signal or unprotected crossings where drivers aren't likely to immediately stop)
- Elevation data
- Avoid roads with high historic collision rate (and point them out)
- Avoid freight routes
The walking isochrones themselves aren't super interesting; getting public transit routes imported from OSM properly would mak all of this work much more interesting.