OSM Inspector/Views/Routing

From OpenStreetMap Wiki
Jump to navigation Jump to search

The Routing view in OSM Inspector shows problems in the data related to routing and navigation.

OpenStreetMap data is not only for creating nice maps. Routing or navigating based on OpenStreetMap data is possible. But small errors in the data that might not show up in a normal map, can lead to suboptimal routes. This view helps by showing those kinds of problems.

Data sources

All data in this view is derived from OSM data. It is produced using a GraphHopper based Java application (source code on GitHub). Because GraphHopper is used for various routing-related stuff, this view provides an insight how GraphHopper views and makes use of OpenStreetMap data.


This view has the following layers:

Unconnected roads

There are six layers for Unconnected roads. They show where roads end without being connected to any other road although there are roads within 15 meter. The Snap points layer shows the likely snap points of these open ends.

In order to reduce the number of false positives, the following cases are not shown on the unconnected roads layers:

  • Edges which are neighbours of the unconnected edge are skipped during searching potential edges to snap to.
  • The missing connection intersects with a fence, wall, embankment or hedge.
  • The unconnected open end is tagged with noexit=yes or entrance=* (except entrance=no).
  • The dead-end way is tagged with highway=service + service=parking_aisle and the way it snaps to is almost parallel.
  • The two ways have different level or layer tags. Due to memory limitations, only levels/layers between -7 and +7 are considered. Ways with a semicolon in their level=* tag (e.g. stairs) and maximum difference of 1 between their lowest and highest level belong to both levels.

The mistakes are grouped by an estimated priority which is calculated based on the road category and the distance. Private access ways get a lower priority value.

Despite these attempts to reduce the number of false positives, there are still a lot of them left. The more blueish the colour of a error point is, the less likely it is a real error.

Unconnected nodes are not necessarily a bug. Maybe there is a gap and you can't get from one road or path to the other. If it is just an oversight and the roads should really be connected, add the missing connection. If there is a gap on the ground caused by a linear barrier (fence, wall, embankment), map the barrier. You may add noexit=yes to indicate a real unconnected open end. However, the OSM Inspector should not be the only reason to add noexit=yes. If a missing connection is shown by the OSM Inspector due to its high threshold of 15 meter, ignore the OSM Inspector and do nothing if the mapping itself is correct.

If you don't know the area, use your good judgement. Compare available satellite imagery and other sources like Mapillary, and don't forget to check when the imagery was captured and when the road was edited. Sometimes it's obvious from the context that some roads should be connected, but sometimes you just can't tell and should leave things for others to fix.

Duplicate ways

The Duplicate ways layer shows lines where two ways used to build a routing graph lie on top of each other on the same nodes. They are usually errors and should be fixed.

If one of the two ways is an area, the duplicated segments are shown on a separate layer. They are sometimes errors and sometimes false positives only.

When resolving duplicate ways issues, look at the tags of both ways, consolidate them and then remove one of the ways.


The Islands layer shows groups of road segments which are not connected to a larger network of roads. These roads are accessible for cars if you look at their tags but they are dropped by a routing engine because the car would be unable to leave this small subnetwork.

There are three layers of islands in the Routing view:

  • Car: This layer shows all edges in the graph which are part of small subnetworks (also known as islands) and accessible to cars. It is based on GraphHopper's car profile.
  • Bicycle: This layer shows all edges in the graph which are part of small subnetworks (also known as islands) and accessible to bicycles. It is based on GraphHopper's bicycle profile.
  • All roads: This layer shows all edges in the graph which are part of small subnetworks (also known as islands) and accessible to any vehicle or pedestrians. It is based on a custom routing profile. In contrast to the car and bicycle layer, it does not take access restrictions into account.

The car and bicycle layer use the limited support of GraphHopper for conditional restrictions.

There are multiple possible reasons:

  • There is no physical connection to a larger network, not even by a ferry. Keep in mind that ferries have to be connected to a road.
  • The roads which lead out of this subnetwork are not open for cars, e.g. due to an added access=private. (bicycle and car layer only)


The following links refer to the old routing view (available from September 2010 to May 2019):

See also / Siehe auch