OpenStreetMap (OSM) has many details about streets, but the schema presents
many challenges for rendering, routing, and analyzing done at the detail of
lanes, especially in the presence of dual carriageways, separated cycletracks
and footways, and complex intersections. osm2streets
provides a simplified
street network schema, a library transforming OSM data into this representation,
and tools to render and work with the results.
A schema able to represent:
Rendering to GeoJSON
Transformations to simplify complex OSM situations
There are other planned features:
Some of these extra features may sound redundant with libraries like osmnx and existing OSM routers. osm2streets will support these features in a way that uses the lane-level detail and consolidated road representation, is compatible with user-made edits to the network, and can be deployed in a variety of environments (native, web, offline without running an external server).
osm2streets
began life
here.osm2streets
to snap routes to roadsYou can use osm2streets today with Leaflet, Mapbox, OpenLayers, or any other web map frameworks. The osm2streets Javascript API can render to GeoJSON.
Since the API isn't stable yet, please get in touch first.
Java bindings are also in progress, with Python and C++ planned.
The osm2streets library itself (Rust):
osm.xml
inputBindings for other languages:
The StreetExplorer web app (Javascript, CSS using Leaflet):
There's many opportunities to help out:
Check out the issues.