od2net: designing moonshot cycling networks
Dustin Carlino
11 November 2023
State of the Map EU 2023
Outline
About me
Team
Credits
All slides feature images with OSM data, attribution often clipped out
Apologies if color schemes are hard to see
Networks for drivers and cyclists aren’t equal
Networks for drivers and cyclists aren’t equal
LTS: Level of Traffic Stress
How do we shift trips from driving to cycling?
How do we shift trips from driving to cycling?
How do we shift trips from driving to cycling?
What is a route network?
What is a route network?
What is a route network?
Why are route networks important?
Strategic network plans like https://content.tfl.gov.uk/strategic-cycling-analysis.pdf
Why are route networks important?
Why not use something existing?
od2net demo
(Be gentle, it’s only alpha)
Two very different interpretations
od2net goals
Initial performance
How to use od2net
How to use od2net
How od2net works
OD data
config.json
osm.pbf
od2net import
network.bin
ch.bin
od2net route
output.geojson
tippecanoe
rnet.pmtiles
Svelte + MapLibre app
Part 2: Workshop
Go to docs.od2net.org (or slides.od2net.org)
Option A: use interactive “many to one” mode, tune routing parameters
Option B: prepare input for your own city, following the Python examples
Option C: customize LTS or edge cost functions
Option C: customize LTS or edge cost functions
Edge cost deep dive
It’s down to preference
Step one: balance trade-offs
Penalty = LTS * [0, 1] + Amenities * [0, 1] + Greenspace * [0, 1]
0 is good, 1 is bad
Cost = Distance * Penalty
LTS + Amenities + Greenspace = 1.0
So max Penalty is 1
(Problems with penalty = 0…)
Step two: map each factor into [0, 1]
LTS
Amenities
0 if edge has >= threshold amenities nearby, 1 otherwise
Greenspace
TODO, but… separate [0, 1] sliders for “through greenspace, parallel to greenspace, nothing nearby”
Uptake model
Part 3: wrap-up
When can I use od2net?
od2net limitations
(Optional) Complementary tools
Thanks!