OpenStreetMap logo OpenStreetMap

Nimman Road, Chiang Mai(Thailand) is a well-mapped, high-traffic corridor. It scores a B on network density: good intersection frequency, reasonable block lengths. But it scores near zero on crossing coverage because there are no highway=crossing nodes tagged within the 800m analysis radius. The street has physical crossings. They’re just invisible to any tool that relies on OSM, which is most tools.

That’s what SafeStreets shows: not just a score, but which data gap is causing it.

Nimman Road, Chiang Mai — SafeStreets walkability analysis showing 4.6/10 Car-dependent score with Street Grid 2.8, Tree Canopy 5.5, Destinations 7.2

What SafeStreets is?

A free tool that scores the walkability and pedestrian safety of any street address globally(graded out of 10). No account required, 190+ countries. OSM is the backbone, and the only data source that works everywhere.

How OSM powers it, three functions?

  1. Address geocoding via Nominatim Every analysis starts here, with a ~50km geolocation bias for local lookups while preserving global search. No proprietary geocoding.
  2. Street infrastructure scoring via Overpass API (800m radius) We query within an 800m circle for:

highway=crossing nodes → crossing safety footway=sidewalk and highway=footway ways → sidewalk coverage highway=primary/secondary/tertiary/residential/living_street → network topology Way attributes: lanes, width, surface, maxspeed, lit, sidewalk, cycleway

Four sub-metrics from this graph:

Intersection density (nodes with degree >= 3 per km2) Average block length (total street length / intersection count) Network density (total street km per km2) Dead-end ratio (degree-1 nodes penalize walkability)

These combine into the Network Design component (35% of the total score). 3. 15-minute city scoring via Overpass API (1,200m radius) Service reachability on foot, scored by nearest distance (<=400m = 100pts, <=800m = 75pts, <=1,200m = 50pts):

Grocery: shop=supermarket/convenience/greengrocer Healthcare: amenity=pharmacy/clinic/hospital Education: amenity=school/kindergarten/library Recreation: leisure=park/playground/sports_centre Transit: public_transport=stop_position/platform, highway=bus_stop, railway=station/tram_stop/subway_entrance Dining: amenity=restaurant/cafe/fast_food

This feeds the Accessibility component (25% of total score) and a separate 15-Minute City Score.

  1. Map rendering via Leaflet + OSM tiles Scored infrastructure overlaid on OSM base tiles. What’s missing, and what would help We’re explicit in the UI about what we can and can’t measure:

✓ Crossings exist and where ✓ Lit / not lit (where tagged) ✓ Service accessibility via POIs ✗ Pavement condition ✗ Sidewalk obstructions (vendors, parked bikes) ✗ Crossing quality (marked, signalled, raised), sparse outside Europe/North America

The most useful contributions for Southeast Asian cities: sidewalk=, crossing=marked/uncontrolled/traffic_signals, and lit= on way segments. These tags directly change scores for real addresses. Nimman Road would improve immediately with accurate crossing nodes added.

The project

SafeStreets is live at safestreets.streetsandcommons.com. Built by Streets & Commons, a civic tech initiative based out SEA If you’re mapping in SE Asia and want to see a specific street analysed, or if you work on pedestrian tagging schema, I’d love to hear from you in the comments

Location: Chiang Mai City Municipality, Fa Ham, Mueang Chiang Mai District, Chiang Mai Province, Thailand

Discussion

Log in to leave a comment