Improving Routing Information Using Mapillary Imagery

Posted by jinalfoflia on 30 November 2015 in English (English). Last updated on 1 December 2015.

Mapillary images are a good source to verify and add information like turn restrictions and speed limits. This is not possible with satellite images. We realised that we need to have a thorough knowledge about the traffic signs used in the region we are mapping, as they are region specific.

Initially we started exploring the traffic data in USA. With help of the traffic data wiki for USA, we came up with a list of road signs which can be mapped using the Mapillary imagery. This list was created after pruning a list containing 467 traffic signs used in USA, after comparing them to the signs detected by Mapillary. We have also listed the OSM tags associated with each traffic sign.

Refer to the table given below to match the traffic sign in the Mapillary image against the list of traffic signs and it also consists of the OSM tags:

screen shot 2015-11-30 at 11 22 55 pm

Here is the traffic signal guide.

This is the workflow we used to map the turn restrictions:

STEP 1: Setting up JOSM for mapping traffic data

In order to be able to map traffic data easily, there are some plugins that JOSM needs to be configured with:

  • Layers to be added:
    • Mapillary layer: tms:{zoom}/{x}/{y}.png
    • Bing imagery: bing[22]:
  • Plugins to be downloaded:


  • Map-paint styles to be added:
    • traffic_signs: It displays all the existing traffic signs that have been already mapped on OSM.
    • Maxspeed: It displays the already existing speed restrictions on OSM.


STEP 2: How to use the mapillary and turn restriction plugins

Using the Mapillary plugin

  • The Mapillary imagery can be added by clicking on imagery -> Mapillary in JOSM. This will add the mapillary layer over the dataset layer.
  • The explanation for how the plugin works can be found here.

    Note: - If one is using tasking manager, first download the task from the tasking manager and then add the Mapillary layer.

  • Every time a new task is downloaded from the tasking manager, a new Mapillary layer must be added after deleting the old one.

Using the turn restriction plugin - The explanation for how the turn restriction plugin works can be found here.

STEP 3: How to add the traffic data using mapillary
  • Probe the different Mapillary images present in that area to find useful traffic data that can be added to the Open Street Map.
  • The Mapillary point on the GPX trail that has a red triangle along with it contain Traffic-signs. screen shot 2015-11-27 at 1 41 55 pm
  • Probe the images to get a good idea of the surroundings and then compare them with the existing imagery to find the exact location of the traffic-sign.

    turn_res To add a turn restriction using the turn-restriction plugin

  • We need to cautious while adding a U-turn/No U-turn in OSM, here is how we can add it:



  • To get a better idea about the area/road, always inspect multiple images.
  • With the help of the plugins, look for one-ways, speed-limits and traffic restrictions which are already present on the road/area.
  • Unless you are sure about the start and end point of a road, it is advisable to avoid adding oneway=yes tag to it.
  • We should avoid adding turn restriction to roads that are leading to oneways going in the opposite direction, like the example below. It will only result in redundant data:


Here we should avoid adding turn-restriction as it will result in redundant data


While mapping, we came across the following issues:

While mapping turn restrictions
  • They are easily visible in the imagery and map but are leading to splitting of major roads and also leading to addition of multiple relations
  • Is this something we need to follow while adding the turn restrictions or there is a better-way?
While mapping speed-limits
  • It is difficult to identify the start and end point of the road to which the speed-limit should be applied.
  • Is there a better way to add speed limits or any convention that is followed while adding them?

For further details about how we created the workflow please refer to this repository.

Comment from Peter Neubauer on 1 December 2015 at 12:00

Wow, that is a great intro! Impressive write-up.


Comment from jinalfoflia on 1 December 2015 at 17:10

Thank you so much @Peter!

Comment from baditaflorin on 8 December 2015 at 12:51

to addition of multiple relations

In JOSM , try to download the connecting way that is connected to the way that you are splitting. \

More simple, download a bigger area then the one where you are editing and you should be fine

Comment from Zian Choy on 30 December 2015 at 07:57

For speed limits, I treat them as if I was driving the road. If I drove past a 45 MPH sign, then I keep myself below 45 MPH until I saw a different sign or changed roads. Therefore, when I add a sign in OpenStreetMap, I extend the speed limit until I run into another speed limit sign on the road. Often, this means that the speed limit gets applied to a large chunk of the road.

Although the resulting speed limit may be a bit inaccurate as you get further from the original sign, it is still better than nothing.

Login to leave a comment