seattleAccessMap
Seattle's sidewalks are not equally accessible. People with mobility challenges face obstacles that most pedestrians never notice, like missing curb ramps, broken surfaces, and blocked paths. The Access to Everyday Life track's dataset from Project Sidewalk contains ~80,000 crowdsourced observations of sidewalk conditions in Seattle. Using this data, we built a system that (1) reveals where the problems are, (2) routes users around them, and (3) informs the city which sidewalks to prioritize fixing first.
Dataset & Cleaning
The Project Sidewalk dataset contains 6 label types. Each record also has coordinates, neighborhood, severity (1-5), and a temporary flag. From 81,973 raw records, we kept 79,722 after dropping rows with missing severity ratings.
Adjusted Severity Metric
Raw severity (1-5) doesn't account for the differences in the label types. A lack of a sidewalk is more impactful than a damaged curb ramp, even if both are rated severity 3. In fact, after investigating Project Sidewalk's labelling methodology (by labelling a couple of sidewalks ourselves!), we found that a severity 1 CurbRamp indicates the existence of a passable curb ramp (which is a good thing). We defined a normalized 0-10 scale with rescaling ranges based on real-world impact:
| Label | Range | Rationale |
|---|---|---|
| NoSidewalk | 5 - 10 | Always significant; no sidewalk at any severity is impactful |
| NoCurbRamp | 3 - 8 | Missing ramp is always a real barrier |
| Obstacle | 2 - 7 | Obstruction; maps directly to impact |
| SurfaceProblem | 1 - 6 | Damaged surface; impactful but less severe |
| CurbRamp | 0 - 5 | Positive feature; ramp exists but may be degraded |
| Other | 1 - 4 | Miscellaneous; low weight |
Map Visualization
We plotted every barrier observation directly on the map and color-coded each point by adjusted severity. We also added a heatmap layer to reveal areas with the highest overall concentration of issues.
Hotspot Clustering
We use HDBSCAN, an unsupervised ML clustering method, to identify barrier hotspots. This is useful for people wishing to avoid such areas, or for city planners looking to identify areas to prioritize. We identified 641 clusters.
We chose HDBSCAN because unlike k-means, it does not force every point into a group and it does not require a preset cluster count, which is helpful when hotspot density varies by neighborhood. We use the haversine distance metric to cluster based on accurate geographic distance.
Fix Priorities
Hotspots show where barriers concentrate, but we decided to take it one step further by identifying exactly which barriers produce the most day-to-day impact. We rank individual barriers by combining adjusted severity with how central their street segment is in the pedestrian network.
impact = adjusted_severity × log(1 + edge_usage)
We estimate edge_usage by sampling ~1,000 random nodes and computing shortest paths from each to every other node in the pedestrian network. We then count how often each street segment appears. This highlights barriers on important thoroughfares and connectors. The log keeps usage from overpowering severity, so a small issue on a busy street still ranks below a severe obstruction in a moderately used area.
The map highlights the top 200 barriers by impact. Ties are broken by higher adjusted severity, then by edge usage, ensuring that consistently disruptive barriers surface first.
Accessibility-Aware Routing
We built a route planner on the real Seattle pedestrian network (via OpenStreetMap/OSMnx). Each barrier is snapped to its nearest network edge, and the edge's accessibility cost is the sum of adjusted severities on that edge.
The routing algorithm is modified Dijkstra's: it expands outward from the start node, always picking the next unvisited node with the lowest cumulative cost so far, and relaxes edges to update the cheapest known path to each neighbor. Edge cost is a weighted combination of distance and barrier severity:
edge cost = distance + barrier_severity × cost1.5
The 1.5 exponent produces a smooth gradient of route alternatives across the tolerance slider. At one end, the route takes significant detours to avoid as many barriers as possible. At the other, it's the pure shortest path.
Key Findings
- Barriers are not uniformly distributed, some neighborhoods are worse than others
- Neighborhoods with the highest barrier count and highest average severity are often different
- Accessible routes typically add 10-30% distance to avoid the worst barriers - a meaningful but manageable tradeoff
- Fix prioritization shows that a small number of high-traffic barriers create disproportionate impact
Limitations & Potential Expansions
- Coverage is uneven, so a low barrier count may mean good sidewalks or poor survey coverage
- Our rescaled severity metric is a best effort guess and might not reflect real world experiences
- Temporary barriers change and repairs happen
- Barrier snapping to the nearest edge is approximate in dense areas
- Potential expansions: elevation/slope data, transit connections, and demographic/equity analysis
Overview
Filter
Fix Priorities
Data Insights
Summary statistics from 79,722 crowdsourced sidewalk accessibility observations across Seattle.
Loading analytics...