Team OSRM is happy to announce a new data analysis feature for OpenStreetmap data based on OSRMs great routing capabilities. Over the past weeks, we at Team OSRM received a number of complaints that a certain part of the road network was not route-able and were asked for help. We observed that some of these error were not caused by obviously invalid tagging, but by connectivity issues such as unconnected islands of the road network, sources and sinks. Think of the latter two as one-ways where you can drive in but not out, and vice-versa. There are in fact 1,074,201 such way segments today.
For the impatient: head to OSRMs demo site and activate the ‘small components’ layer or use the routing view of Geofabriks great OSM Inspector to see the visualization.
Big thanks go to Geofabrik for hosting the tile layer that we use.
Strongly connected components
One assumption in reality is that the road network is a strongly connected component. It is a technical term, but in essence it means that you should be able to go from one intersection of the road network to every other intersection [*]. Especially, you should not get stuck in a street that you can’t get out of.
We implemented a standard algorithm for this problem, known as Tarjan’s SCC algorithm to automatically detect all ways that have these problems each time we update our routing data.
Right now, there are about a million way segments planet-wide that bear connectivity issues. While this number seems large at first, about 60% of these problems shall be fixable by editing a single segment only.
What kind of problems are visualized?
The following list will show you the problems that will be detected:
Unconnected islands
Here, we have a road that looks like a car could drive on it, but it is unconnected to the rest of the road network. Most probably, it is missing a tag that indicates access rules.
Sources and Sinks
Here, a one-way street just ends. Any car that enters this street would be trapped according to the data. This can be caused by faulty tags or perhaps also by missing data. It may be an indicator that there is a street missing.
Here we have a source of traffic. How should a car ever get to the upper-left corner if traffic always goes in the other direction?
False Positives?
There is a limited number of false positives. Either there is an accidental problem in our parsing or on purpose. Most notably, piers. Most ferry connections go through piers although the ferry carries cars. And in the early days of OSRM we allowed them to connect continental main land and islands in the sea.
And of course, someone might have just already fixed the problem. * * * # Links:
- OSRM Demo Site: http://map.project-osrm.org/
- OSRM Bug Tracker: https://github.com/DennisOSRM/Project-OSRM/issues
- Small Components on OSM Inspector: http://tools.geofabrik.de/osmi/?view=routing
[*] Technical Note: we implemented an iterative version of the seminal algorithm.
토론
2012년 10월 9일 09:32에 maning님의 의견
Great! Any plans for a worldwide coverage?
2012년 10월 9일 10:50에 AMosm님의 의견
A (oneway) highway(=service) starting/ending in a node amenity=parking + parking=underground or amenity=parking_entrance IS a source/end and perhaps should not be extra marked as unconnected. Example: osm.org/browse/way/134837754
2012년 10월 9일 11:38에 DennisL님의 의견
It has world-wide coverage. The renderer seems a bit over-whelmed at the moment.
2012년 10월 9일 14:10에 Pink Duck님의 의견
There seems to be a large number of highlighted segments that are attached to highway=service closed-ways with area=yes. The routing does not seem able to use highway=track, tracktype=grade1.
2012년 10월 9일 16:16에 dcp님의 의견
Great work, lads (and Ladies if any are involved). I have a street connected to an area=yes; highway=residential which is connected to a street. All have the same name. Is this an mapping error or a false positive?
2012년 10월 9일 17:11에 DennisL님의 의견
Thanks!
Areas are not routed through (yet).
2012년 10월 9일 17:19에 Zverik님의 의견
Dennis, is it possible to create such component maps not only for all highways, but for highways with level >= residential/unclassified, highway >= tertiary etc?
In Russia we have such validator http://peirce.gis-lab.info/qa/RU/routing-map , but it is not scalable :(
2012년 10월 9일 18:14에 DennisL님의 의견
Well, yes and no. At the moment our capacity is rather limited. But we may implement that feature in the future.
2012년 10월 9일 20:17에 Pierre-Alain Dorange님의 의견
I try optimize data for routing in my local city (their was small components signaled) but majority its was false positive for me : generally real noexit road (tagged noexit=yes). It the old town at Cognac (France) we got many of those noexit street, because the city is old and some street are strange and because some street has become “pedestrian only” so side street became “noexit”…
Do OSRM small component miss “noexit” tag or do i miss someting ?
2012년 10월 9일 20:19에 DennisL님의 의견
Do you have an example to look at?
2012년 10월 10일 00:54에 amm님의 의견
What happens to cars that enter into a oneway street that has noexit? Either you are allowed to drive in both directions (in which case the oneway tag would be wrong), there is a valid exit, or you are not allowed to drive into that road at all. (Or the traffic planner in your city is mad and/or has a hatred for cars… ;-))
2012년 10월 10일 05:48에 harendra_7님의 의견
Satellite images are not enough clear in some areas to draw and connect the roads.
2012년 10월 17일 20:53에 malenki님의 의견
I found a bug which isn’t marked with the new feature, yay! ;) See http://osrm.at/1xY
2012년 10월 23일 12:16에 DennisL님의 의견
Malenki, this is not an error that get’s visualized in the layer. if you move the markers along then you see that everything is connected, but there is a detour. The problem is not reachability but the detour.
2012년 10월 23일 17:13에 Pierre-Alain Dorange님의 의견
@DennisL, my example are my town where i live : Cognac, France. I got lot of small island error here : http://tools.geofabrik.de/osmi/?view=routing&lon=-0.32778&lat=45.69423&zoom=17
It was mostly related to street that end on “pedestrian-only” streets. I tag tham “noexit=yes” bit there were reported as “island”, i probably miss something ? I re-inspect and one street was probably bad tagged (i change that just now) but the others seems OK for me.
2012년 10월 24일 08:08에 DennisL님의 의견
@Pierre-Alain Dorange, your examples are pretty obvious. One-way streets either start or end at ways where car traffic is not allowed.
2012년 10월 28일 09:48에 mcld님의 의견
Dennis, this visualisation is SUPER-helpful! It led me to fix many wonky things: streets mis-labeled as footways, oneways going the wrong way, etc.
(Some things are unfixable, such as one-way roads leading into carpark buildings. It might be good to ignore sources/sinks that terminate it building entrances etc?)
I guess the computation is heavy, but are you planning to have the data refreshed? I have been hacking away at various patches, and it will be hard to remember what has been fixed and what hasn’t.
2012년 10월 28일 11:35에 DennisL님의 의견
@mlcd Thanks for your comments. The layer is updated daily (with a few exceptions).