How designhaoyu/safecyclingrouting works
Zurich Safe Cycling Route Recommender turns accident records into hourly edge-risk scores, combines those scores with a cycling network to compute four route strategies, and presents queried routes in a Streamlit map and dashboard. The user sets an origin, destination, and hour; the frontend invokes the backend routing pipeline, which prepares the graph and safety weights, computes routes, and exports results for display. Step 1 is documented in the README but its notebook implementation was not sampled; its documented processing stages are shown without asserting internal module wiring.
Main entry points: exports.py Route Exports · run_step2_pipeline.py Routing Pipeline · backend.py UI Routing Backend · frontend.py Streamlit App
Components 16
Safety Scoring
- Accident Scoring
scripts/Step_1.ipynb
Route Computation
- Routing Pipeline
scripts/run_step2_pipeline.py - Graph Preparation
src/zurich_safe_routing/graph_builder.py - Score Attachment
src/zurich_safe_routing/safety_data.py - Route Strategies
src/zurich_safe_routing/routing.py - Route Exports
src/zurich_safe_routing/exports.py
User Interface
- Streamlit App
frontend.py - UI Routing Backend
backend.py
Data and Results
- Accident Records
data/raw/roadtrafficaccidentlocations.csv - Cycling Network
data/raw/zurich_bike_graph.graphml - Hourly Edge Scores
data/processed/zurich_hourly_edge_safety_score.csv - Current Routes
results/step2_current_routes.geojson - Route Summary
results/step2_route_summary.csv - Readable Summary
results/step2_route_summary.md - Static Route Plot
Other components
- Cyclist
Connections 22
- Cyclist → Streamlit App: sets query
- Accident Records → Accident Scoring: provides records
- Cycling Network → Accident Scoring: provides network
- Accident Scoring → Hourly Edge Scores: writes scores
- Cyclist → Routing Pipeline: supplies arguments
- Streamlit App → UI Routing Backend: requests routes
- UI Routing Backend → Graph Preparation: loads graph
- UI Routing Backend → Score Attachment: loads and attaches scores
- Hourly Edge Scores → Score Attachment: provides hourly scores
- Graph Preparation → Cycling Network: loads or caches graph
- UI Routing Backend → Route Strategies: computes strategies
- UI Routing Backend → Route Exports: exports results
- Routing Pipeline → Graph Preparation: loads graph
- Routing Pipeline → Score Attachment: loads and attaches scores
- Routing Pipeline → Route Strategies: computes strategies
- Routing Pipeline → Route Exports: exports results
- Route Exports → Current Routes: writes route links
- Route Exports → Route Summary: writes summary
- Route Exports → Readable Summary: writes summary
- Route Exports → Static Route Plot: writes plot
- Current Routes → Streamlit App: renders route map
- Route Summary → Streamlit App: drives dashboard