mvexel's diary

Recent diary entries

Using the new OpenStreetCam upload scripts (and a detour to geotagging with JOSM)

Posted by mvexel on 8 March 2019 in English (English)

The upload scripts are a part of the open source OpenStreetCam platform that are probably not as widely known. You can use them to upload images to OSC that you capture using something other than the Android / iPhone app or a OSC Waylens camera. My colleague Bogdan will publish a blog post going into more technical detail on the ImproveOSM blog soon, but I wanted to share my initial experiences using just the basic uploading functionality.

I don’t want to go into the script setup steps here, but if you are having trouble with that part, I am happy to help out.

Detour: Collecting and preparing my images

If you are just interested in the upload scripts, you can skip this part…

This is the setup I use to collect OSC images when I don’t use the app or the Waylens camera:

It consists of:

  • A GoPro Hero3+ with underwater case
  • A Ram mount with GoPro attachment
  • Spare GoPro batteries and charger (similar to this one)
  • A GPS unit (I use a Garmin Dakota 20 but any old GPS recording device will do)
  • My car

Note that I mention a separate GPS unit. The GoPro Hero3+ doesn’t have its own GPS, so you need a separate GPS recording so you can geotag each image later.

When I am ready to start driving, I set the GoPro to take 1 picture a second, make sure it has a full battery, fire up the GPS and go. The battery lasts around 2 hours, so that coincides nicely with rest stops. Every time I get out of the car to stretch my legs, I change out the charged battery, drop the empty one in the charger and continue.

When I get home, I still need to geotag the images before they can be uploaded to OSC. There are many open source and commercial tools to help you with this, and I have tried many, but I find that good old JOSM does it the best. All you need is the Photo Geotagging plugin. This is how it works. I load the GPX track into JOSM first. Next, I load a set of images without location metadata into JOSM. The plugin will detect this and pop up its window that lets you match the GPX with the images.

Unless the time on your GPS device and the time on your camera are exactly the same, you will need to define the offset in this dialog. This is best done using an image at a known location, so you can visually check in JOSM if your offset is correct. In my case, I stupidly forgot to check the GoPro time setting, and for whatever reason it was reset to the default factory time of January 2013, so I had to calculate a huge offset, as you can see above.

When you’re satisfied with the location matching, you can right click on the ‘Geotagged Images’ layer and select ‘Write coordinates to image header’.

Matching an image at a known location with GPX visually

Okay, now we’re ready to use the upload scripts!

Uploading images

Now that we have a sequence of geotagged images, the process of uploading them to OSC is actually quite simple. In the terminal, call the upload script like this:

cd /path/to/upload-scripts 
source venv/bin/activate # activate the python virtual environment, see setup steps
python upload -p /path/to/image_dir

The script will scan the directory for image files and respond with something like

Searching for sequences...
    Found sequence at path /path/to/image_dir. Sequence type Exif-Photo.
Search completed.

Starting to upload 1 sequences...

For login go to this URL in your browser:
Login and grant access then press ENTER

Next you will need to get an OSM access token, so the script can associate the images with your OSC account. This step assumes that you already created an OSC account using OSM OAuth, but if you’re reading this, you probably already have done that. Copy the OSM url into a browser and hit enter. OSM will respond asking if you want to grant OSC (minimal) access to your OSM account. Authorize this and you can go back to the terminal and hit enter there. the script will then initiate the upload. When it’s done, you will get a link to the OSC trip that has been generated. Congrats!

Fortunately you can manually delete images from OSC….

Here’s one of the trips I uploaded this way.

MapRoulette 3.2 is out!

Posted by mvexel on 6 March 2019 in English (English)

tl;dr the release notes 🙂

✨This is a big one✨ We redesigned MapRoulette to make some things easier to find, improve the workflow, and hopefully make it look prettier 💎 as well. We hope you like it!

First of all you will be greeted by a new homepage. This landing page introduces new users to MapRoulette and suggests some challenges to start working on.

New Homepage


An entirely new section of MapRoulette is the Dashboard. This is your personal window into MapRoulette activity. You can see things like your own recent activity, popular challenges and your tracked tasks here. As with almost everyting in MapRoulette, the Dashboard consists of widgets that you can move around, resize, add and delete to create the layout and information display you desire. You can even switch between multiple layouts.

The new MapRoulette dashboard

The main navigation has changed a little bit. We moved Create & Manage to the user dropdown, because creating and maintaining challenges is a lesser used, advanced feature. We added the Dashboard to the top level navigation, and renamed Challenges to a more inviting Find Challenges.

Oh, and you can now also see how many points you collected right in the top bar!

Improvements in Task Completion

Like the Dashboard, the Task Completion pages are now fully Widget-based 🗂. This means that you can move everything (including the map!) around to organize the page to your liking. You can even save multiple layout preferences. We added an Other… dropdown to the task completion buttons, giving you access to all completion options right away. Before, you had to click Edit before you had access to some of the options, like Too hard / Couldn't see. Finally, you can now quickly override your preferred OSM editor. Previously, you could only access this setting in your user profile.

More Ways To Sort Challenges

You can now 🔢 sort challenges by when they were created, so you can quickly see what’s new, and by popularity.

Happy Mapping!

These are just some highlights of what’s new. The full release notes contain more detail. If you’re interested in helping with development, note that the MapRoulette API repository has moved to the Github osmlab organization and is now called maproulette-api. The Docker configuration to deploy MapRoulette was also updated.

Let us know what you think! Drop us a line at, we always look forward to hearing from you.

More 🆕 coming soon –> Portuguese translation 🇧🇷🇵🇹, Review mode 🤓. Stay tuned!

MapRoulette 3.1.3 is out. Here’s what’s new!

Posted by mvexel on 7 February 2019 in English (English)

tl;dr the release notes 🙂

If you go to now, you will be greeted with the latest point release: 3.1.3. This is likely the final public release before 3.2, which will be a bigger one featuring a design refresh among other things! For now though, let me summarize the highlights of the 3.1.3 release.


MapRoulette is now available in Korean, thanks Dongha Hwang!

MapRoulette in Korean

The Japanese translation was updated to fix minor typos. MapRoulette is now available in 7 languages. If you want to contribute a translation file, have a look at the pull request for the Korean translation to get started. Don’t hesitate to ask if you get stuck!

Task Styling

Thanks to a pull request by Ilya Zverev, MapRoulette now lets you style the appearance of your tasks on the map using the simplestyle standard devised by Mapbox. They have a simple example in their documentation to give you an idea of how to apply styling using simplestyle.

Leaderboard Updates

Have you been fixing tasks in say, the United Kingdom and feel like you deserve some credit for it? Now you can point your friends to the new country Leaderboard and show off your hard work. We use bounding boxes for the countries, so it’s not an exact science, but pretty close in many cases. Another new thing you can do in the Leaderboards is load more results after you scroll down to the bottom. And you may like that we will now always show your place in the leaderboard even if you’re way down.

24th place but at least I show up now!

Other Updates

As usual, there’s more: new keyboard shortcuts, a new search shortcut, display tweaks. Read the full release notes for that. Happy mapping!

MapRoulette 3.1.2 released

Posted by mvexel on 12 January 2019 in English (English)

MapRoulette 3.1.2 is now available on Here’s what’s new!

MapRoulette is now available in Japanese

We added a Japanese translation, thanks!

Share your Challenge list

New filters you apply filters to the challenge list to narrow down your results now become part of the URL so you can share that particular list with others. For example, this URL will show you all Challenges that have to do with roads in South Korea: (there are two, and they’re both very useful and fun to work on).

Edit only current object in JOSM

Some tasks happen to be in areas where a lot of unrelated OSM data exists. This can lead to long loading times in JOSM or even API errors. There is now a setting in your MapRoulette user profile that has JOSM just load the current task feature, if the task is an OSM object.

These are just some highlights. A complete list of improvements and fixes is here.

Sneak Peek at New OpenStreetCam JOSM Plugin

Posted by mvexel on 30 November 2018 in English (English)

You probably already know that OpenStreetCam detects signs in the U.S. (other regions in development, you can help, we’re open source).

Until now, you would see something like this in JOSM if you enabled the signs layer in OSC

The upcoming new version introduces intelligent aggregation, so you’ll see this instead:

The updated plugin will be released very soon, and our JOSM developer Beata will write a blog post going into much more detail on Telenav’s ImproveOSM blog. We look forward to your feedback!

In the mean time, in this video from SOTM US 2018 you can learn the technical background on how we do the aggregation.

Background imagery source: Digital Globe Premium

MapRoulette 3.1.1 Release Notes

Posted by mvexel on 19 November 2018 in English (English)

MapRoulette 3.1.1 is now available on Here’s what’s new!

Mapillary layer

Mapillary images are now available as an overlay on the map. If you’re zoomed in far enough you can select the Mapillary overlay from the Layer dialog.

This is a work in progress. Let us know if you have any suggestions to make it better! And yes, we plan to support OpenStreetCam images soon as well.

Rebuilding Tasks

MapRoulette now supports rebuilding tasks from Overpass based challenges as well as local and remote GeoJSON challenges. You can use the ‘Rebuild’ link at the top of you Challenge maintenance screen to start the process. For Overpass based Challenges, it will simply re-run the Overpass query. For remote GeoJSON files hosted someplace else, it will reload the GeoJSON from there. For local GeoJSON challenges, you will be prompted to select a new GeoJSON file to upload from your computer.

For a rebuild to work, you need to have assigned unique identifiers to Tasks in your Challenge. MapRoulette uses these identifiers to match the new Tasks with existing ones. We created a wiki page to explain this in more detail.

Public Leaderboards

Each Challenge now has a public Leaderboard page! You can access it on the Challenge Browse page.

The Challenge leaderboards work the same as the overall Leaderboard. You can select one month, three months, six months or a year for the period. You get 5 points for fixing a Task, 3 for marking it as Not an Issue or Already Fixed, and 1 point for marking a Task as Too Hard.

See also the Release Notes on Github for a complete summary with links to the relevant tickets.

MapRoulette 3.10 Release Notes

Posted by mvexel on 12 November 2018 in English (English)

MapRoulette 3.10 is now available on Here’s what’s new!

For Mappers

We made changes to the map layer selection. You can select more and more relevant background map layers in MapRoulette. The available layers are retrieved from the OSM Editor Layer Index. For aerial imagery layers, you can also select the Mapbox road overlay.

When browsing for Challenges, you can now sort the results different ways: by age, by popularity and ‘smart’ which also takes into account Featured Challenges and Challenges you saved. The old sorting by name is also still available.

Smaller improvements include support for Level0 as a preferred editor, more keyboard shortcuts and seeing the age of tasks when browsing Challenges.

For Challenge Owners

You can now use mustache tags in your Challenge description. These are placeholders for values that are unique for each task. For example, if you have a value lanes in your source task GeoJSON, you can add something like “We think this road has {{lanes}} lanes. Can you verify this using imagery and update OSM as needed?”. When a task is shown to the mapper, the tag will be replaced with the appropriate value.

You can now organize the Challenge and Project administration screens the way you like them. All components are widgets you can drag, remove, and add. You can even create different views to see different sets of information at a glance.

We also support a new streamable GeoJSON format and give the option to ignore GeoJSON errors.

For the full list of features, bug fixes and changes see the release notes on Github.

Happy mapping!

Adding road names from TIGER using MapRoulette

Posted by mvexel on 9 November 2018 in English (English)

TIGER is the street database from the U.S. Census. An old version of TIGER was used to bootstrap OSM in the U.S. back in 2008. We have come a long way since then (see image below) and OSM is now much better than TIGER in most places.

Image from

New versions of TIGER are released every year and they are still useful. Local governments update it with new roads and street names. If you compare new TIGER data with what’s in OSM, you get useful information about where OSM may need improving. If you edit in iD, you get visual cues when roads are missing:

You have to stumble upon them, though. And you only see new roads, not if a street that didn’t have a name now has one.

My colleagues in the Telenav map team have run OSM and TIGER 2017 through our Cygnus conflation engine to find those streets in OSM that don’t have names yet, but TIGER does have a name. We put them in MapRoulette for a few select areas.

MapRoulette is a micro-task tool that I built originally to clean up the redaction mess after the license change. These days, it is available to anyone who wants help to fix all kinds of small problems in OSM. Scroll through my recent diary entries and you will find blog posts about MapRoulette. Right now I just wanted to walk you through solving these TIGER based name adding challenges.

First I select one of the TIGER Challenges in MapRoulette, for example this one for New Orleans.

The first task I get is this one here:

I have three options on the left, Edit (which takes me to my preferred editor, you can set this in your MapRoulette user profile), Not an Issue for if you can already see on the map that there is no issue, or Skip if for whatever reason you’d rather leave this task to somebody else.

Clicking Edit takes me to my preferred editor, JOSM.

And in fact this street segment has no name. The TIGER roads overlay tells me that this is just a part of Lake Trail Drive. I fix the error and upload.

MapRoulette has already taken care of pre-filling a changeset comment and source, but you’re of course welcome to tweak these to your liking.

After the upload completes I am ready to switch to MapRoulette in my browser, click I fixed it and go on to the next task.

Finally, here’s a list of all TIGER name challenge we have currently. If you want your city or area included, let me know!

Happy Mapping!

MapRoulette Insider - Creating a Challenge

Posted by mvexel on 6 November 2018 in English (English)

In this post, part of the MapRoulette Insider series, I will show you how to create a MapRoulette Challenge yourself.

The first thing you need is a Challenge idea. Good challenges have tasks that:

  • Are easy to solve (typically less than one minute)
  • Do not require local knowledge
  • Involve only one or two OSM objects

My example challenge meets those criteria. I ask mappers to review motorway_junction nodes in the United States that have name tags. This is uncommon in the U.S. Often mappers will add a name tag that has the destination information on it, so the information renders on the map:

This Overpass query selects all these nodes.

area[name="United States of America"]->.a; node["highway"="motorway_junction"]["name"](area.a); out meta;

With that query in hand, I can go to MapRoulette and click ‘Create’ at the top. This takes you to your MapRoulette Projects page. By default you will only have one Project. Click on its name to select it as the home for your new Challenge. At the top of the Project page, you will find the ‘Add Challenge’ link, click that to start the wizard to add a new Challenge.

The Wizard has 4 pages, but only the first two require your full attention :)

On the first page you enter the title, description and instruction for your challenge, as well as some metadata that will be used to help others find it and identify edits made by mappers using the Challenge:

  • Visible Whether the Challenge will be listed. If no, you can still share the Challenge URL and it will work.
  • Name A descriptive name for the challenge. I used Review named motorway junctions in USA. A good title describes what the challenge is about is a few words.
  • Description Some text to describe in more words what the challenge is about. This field supports markdown and appears in the expanded challenge information when mappers browse for interesting challenges:

I used Motorway junction nodes are not commonly tagged with name. This challenge asks mappers to review those nodes, removing the name where it’s not applicable.

  • Blurb Feel free to skip this. An even shorter description of what the challenge is about. I used Review named motorway junction nodes
  • Instruction This is perhaps the most important text. Here you tell mappers exactly what the task is you want them to perform. Be specific and use links (this field supports markdown as well) to the OSM wiki or other external sources where needed. This text is shown next to the map of the task location. I used This motorway_junction node has a name tag. This is uncommon, see the OSM wiki for details. If this name tag does not represent a ‘name of the junction or interchange’, the name tag should be removed. If you’re not sure, you can skip the task.. Note how I use markdown features to make the instructions easy to read and comprehensive.
  • Changeset Description This field will be used to pre-fill the changeset description in the editor. I used reviewing named motorway junctions. A #maproulette hashtag will be added unless you change that default setting below.
  • Changeset Source This field will be used to pre-fill the changeset source field in the editor. If your task involves using any external data, you should list it here. I used maproulette;overpass.
  • Difficulty You can leave this at ‘Normal’ unless your tasks are particularly easy or hard. We may change this system in the near future..
  • Category This helps the user find challenges they are interested in. There is a dropdown menu on the main Challenge list that lets users narrow down the list by category. For this challenge I used Roads / Pedestrian / Cycleways.
  • Keywords These also help users find interesting challenges. They are used in the free text search field. I used junction, name, motorway and exit.

When all this is filled out, you can proceed to screen 2, where you supply the source data for the tasks. This can be a GeoJSON file or URL, or an Overpass query. If you use an Overpass query, make sure you don’t use any Overpass Turbo specific language such as {{geocodeArea:...}}. Test your query in Overpass Turbo first.

The final two screens let you add rules to prioritize certain tasks over others based on OSM tags, and let you define some view related settings for your challenge. The defaults are sensible but please do review them and tweak as needed. Make sure that the query only returns the nodes or ways that you want mappers to review, and ideally the number of objects returned should be no more than a couple thousand.

When you click ‘Finish’, MapRoulette will query Overpass in the background and populate your challenge. Depending on how heavy the Overpass query is, this can take a few seconds to a couple of minutes. When it finishes, you will see a map with your tasks, a complete list of tasks and some more challenge information.

You can now click ‘Start’ on the top to go directly to your challenge and try it out!

Updates to Meet Your Mappers

Posted by mvexel on 27 August 2018 in English (English)

This post first appeared on my blog.

A few weeks ago, I built and released Meet Your Mappers, a web tool that lets you identify OpenStreetMap mappers in an ares of your interest. I received a lot of great feedback and encouragement and have addressed some of the main concerns people raised. Here’s an overview of the updates.

Box shaped areas of interest

The single most important piece of feedback I got is that the tool is too hard to use because of the need to identify the area of interest by looking up an OSM relation ID. This is error prone and unfriendly to those not too well acquainted with how administrative areas are mapped in OSM.

This was partly done by design (I didn’t want to make it too easy to use, because of the demands on my bandwidth and the Overpass API) and partly because I was lazy (I didn’t have to build a map widget).

But folks kept asking for it so I added a map widget so you can draw a bounding box to indicate your area of interest. The relation ID option is still there as well.

Alternate server

Apparently, the main Overpass server is not accessible for some people due to internet access restrictions, so I added the option to call an alternate server at

Mapper identification

MYM groups mappers into mapper types. If you mapped a lot in the area, MYM labels you a ‘Power Mapper’, for example. The applies only to the area of interest, because MYM cannot see what you may have mapped outside of the area it analyzed. I added some wording to make it more explicit that the Mapper Type is a local designation.

I also added an link to the ‘How Did You Contribute’ tool for each mapper. HDYC analyzes a mapper’s entire history for a more complete picture of how much and where they mapped.

Let me know what you think of these improvements, that are now live at

MapRoulette 3 Insider - Virtual Challenges

Posted by mvexel on 6 August 2018 in English (English)

This and future diary posts also appear on my blog.

After introducing MapRoulette 3, the micro-tasking tool for OpenStreetMap, I would like to follow up with a series of ‘Insider’ posts. Each of them will highlight an interesting feature or function of MapRoulette.

This week, we will look at Virtual Challenges.

Challenges in MapRoulette

MapRoulette consists of Challenges, which are groups of similar Tasks. An example is the Embassies missing representing countries Challenge by user johanemilsson. It asks you to add missing country=* tagging to specify which country the embassy, consulate or mission represents.

You can start working on this Challenge right away by clicking Start. That will take you to a random Task. Because this Challenge has Tasks all over the world, you could land anywhere. This is why it is called MapRoulette – the ‘Roulette’ wheel spins and you get a random task! What is nice about this is that you get to improve the map all over the world, and see what the map looks like in faraway places.

But what if you want to focus on improving one specific area? MapRoulette makes this possible too, with Virtual Challenges. Let’s talk about how to use those!

Creating and Using Virtual Challenges

A Virtual Challenge is a Challenge that consists of a custom group of Tasks in a small area. You can create a Virtual Challenge quickly and easily yourself, based on the Tasks that are already in MapRoulette. Here’s how you go about this.

First navigate the map to show the area you are interested in by. If you zoom in far enough, you will see individual tasks appear on the map.

You can apply filters to further narrow down the amount of Tasks. For example, you could add a filter to only work on Easy tasks.

Once you’re satisfied, you click the ‘Work on mapped tasks’ button. MapRoulette will ask you to give you new Virtual Challenge a name.

After you set the name, you will be taken to the first random task in you Virtual Challenge. At the top of the Challenge List, you will find a link you can share with others to work on the Tasks together!

Let me know how you used the Virtual Challenge feature and how you would like to see it improved.

Introducing MapRoulette 3

Posted by mvexel on 6 July 2018 in English (English)

This and future diary posts also appear on my blog.

MapRoulette lets anyone contribute to OpenStreetMap by fixing small mistakes on the map. It works like a roulette wheel: once you select something you want to work on, MapRoulette will give you a random task to work on. Once you fix it, you return to MapRoulette for the next task. Do as few or as many as you like. Be careful, people have been known to get hooked on it!

Since 2013, MapRoulette has been used by thousands of mappers to complete well over 1.5 million small tasks to improve OpenStreetMap. We have put all the feedback we have received and lessons we learned into the latest version: MapRoulette v3.

In a series of posts, I will highlight some great new features of this new version. This is the first post. Enjoy!


I heard from some mappers that they couldn’t find anything interesting to work on. We spent a lot of time making that easier, by adding different filters.


You can quickly narrow down the list of available Challenges by zooming and panning the map, and selecting ‘Within Map Bounds’ or ‘Intersecting Map Bounds’ from the ‘Location’ dropdown menu. ‘Within Map Bounds’ will only show you Challenges that only have tasks within the current map view. ‘Intersecting Map Bounds’ will also show you Challenges that have some, but not all, their Tasks in the current map view. Additionally, you can narrow down the list to Challenges near your current location. This requires allowing browser access to your location.


Challenges are now grouped into Categories, like ‘Roads / Pedestrian / Cycleways’, or ‘Buildings’. You can filter the list of available Challenges by selecting a Category from the ‘Work on’ dropdown menu.


You can enter any text in the search box, and MapRoulette will only show you the Challenges that have a name or description containing that text.

You can clear any filters you have set with using ‘Clear Filters’.

Stay tuned for future posts about the all new MapRoulette 3! I hope you will give it a(nother) try and let me know what you think.

MapRoulette destination challenges: success! (and more to do)

Posted by mvexel on 5 June 2018 in English (English)

A while ago I launched a few challenges on the new MapRoulette (new! you should check it out :)) that have to do with motorway exit information in the United States. Lots of exits around here do not have that information, encoded mainly in destination, destination:ref, destination:to and destination:name tags.

A destination being added based on a Mapillary image

These tags are helpful for navigation users, so they can match what they see on the sign to what they see on their app. Many navigation apps, including OsmAnd, MAPS.ME and Scout use these tags.

Obviously, this information cannot be added from aerial images, but now that there is plenty of street level images from OpenStreetCam / Mapillary to choose from, adding destination info as a non-local mapper becomes much easier. That’s why I created these challenges.

  • A task from the Connecticut destinations Challenge *

There have been 11 Challenges so far, for 11 different states. 8 of them are done, but you can still participate in the ones for Connecticut (just posted!), Florida and Pennsylvania.

See the wiki on destination for detailed tagging guidance. Happy mapping!


Posted by mvexel on 4 June 2018 in English (English)

I was going over unnamed ‘main’ roads in my area using this Overpass query in JOSM:

Most of the time I can use the TIGER overlay to add the missing names. Sometimes I stumble upon a way that should have been tagged as a roundabout or a link (and those usually do not have a name tag). There are some cases when a mapper has added a newly built road from survey or aerial images that does not appear on TIGER yet:

It would be useful to remind myself and others to take some street level imagery there. So I started adding fixme=streetlevel tags to these ways. Perhaps this can be picked up by OpenStreetCam and Mapillary to add to their apps so people can remember to drive there when they are in the area. Extra points maybe?

update there is already the more generic fixme=survey which could also be used, however, for some cases you would specifically like street level images. The few fixme=survey that I found in a quick search in the western USA were mostly trails and paths, which are not the main use case for street level platforms (you can capture them of course).

Creating a quick Survey Kit with Overpass Turbo

Posted by mvexel on 2 June 2018 in English (English)

The weather is nice and I want to go out mapping a little later. It would be nice to have a file and map with things that I wanted to check. Today I will use Overpass Turbo, a great web interface to the Overpass API that gives you all the tools you need to create a quick Survey Kit that you can take with you: a map you can print, and a GPX file to put on your phone or GPS receiver.

Let’s say I am interested in businesses that have no opening hours so I can go and add those while I am out. This is a query that would give you exactly that. It is probably not complete and could maybe be simpler, but it is quick for small areas and it does what I need :)

I run this query on a commercial / retail area near my house:

I can then export this as a PNG map to print

And as a GPX file I can put on my Garmin:

And I’m ready to roll!

OpenStreetCam sign detection code and training data open sourced

Posted by mvexel on 16 May 2018 in English (English)

Telenav created and hosts OpenStreetCam, as many of you know. OpenStreetCam now has well over 130 million images contributed in large part by OSM mappers (thanks!). We already integrate the images themselves with JOSM and iD.

About a year ago, we started an internal initiative to apply machine learning to detect important features such as signs that are captured in the images. While we haven’t rolled that out at scale yet, you can already see the results in some US metro areas such as Salt Lake City, Detroit and Dallas / Fort Worth, using the latest version of the OpenStreetCam JOSM plugin. The goal is to make mapping sign content much easier and quicker. You can, for example, filter speed detected speed limit signs to see only the ones where the way in OSM does not have this speed limit yet.

So far, the technology behind this has been internal to Telenav. This is changing today.

Starting today, you can see, download, and contribute to the source code that powers our sign detections from Github. In addition, we’re releasing a training set and a test set of 45000 images manually annotated by our map team with more than 55000 signs in 23 different classes such as: traffic signals, stop signs, speed limits and turn restrictions. You can use these data sets to run your own detection improvements. Perhaps you want to detect benches? Bus stops? Storefronts? Be our guest ☺️ We are happy to add your improvements to the OpenStreetCam platform if they are useful to OSM.

We are also running a competition to celebrate this open source release. If you think you have what it takes to improve our existing detections meaningfully, I encourage you to enter! The competition runs until August 17. There is a $10,000 prize for the winner!

Finally: we do not have any plans to automatically add any of this detected information to OSM. Any improvements will always be made manually by mappers through the existing JOSM plugin, iD integration (coming) and MapRoulette.

If you’re interested, there was also an official press release announcing this.

Missing Roads from ImproveOSM now also on MapRoulette

Posted by mvexel on 24 April 2018 in English (English)

Spanish language version

ImproveOSM is my employer Telenav’s effort to process billions of GPS points from our users and partners into actionable tasks for mappers. We currently detect missing turn restrictions, missing or wrong one-ways and missing roads. The easiest way to work on these tasks thus far was to install the JOSM plugin.

Now that we have a new version of MapRoulette, I thought it would be nice to make some of these tasks available through MapRoulette as well. This makes it a bit more manageable, because we have 80.000 missing or wrong one-ways, almost 300.000 missing turn restrictions, and almost 1.6 million missing road tiles.. To break that down, let’s start with a country-by country effort to add missing roads. I created a challenge for Colombia that you can find here. Let me take you through the process of solving a missing roads task. I use JOSM for my example. You can use iD as well, but then you can skip the steps that involve the JOSM plugins.

1. Install the JOSM plugin

If using JOSM, open the plugin preferences and search for ImproveOSM. Install it and restart JOSM. This will give you three map layers for the different types of tasks. I set the opacity for the missing roads layer lower, because the tiles can make it hard to see the imagery.

2. Pick a Task

Go to the challenge and click ‘Start’. You will then be taken to a random task.

3. Complete the Task

The marker for the Task in MapRoulette points to the center of a ImproveOSM missing roads tile.

Sometimes the missing road is not exactly at that location. You can make sure by clicking Edit (make sure you have JOSM running and remote control enabled) and inspecting aerial imagery. You will also see the ImproveOSM tile or tiles used to create the MapRoulette task.

After adding the missing roads (and other things that you see missing or need editing), you can upload your edits. You will notice that MapRoulette has automatically added an appropriate changeset comment for you.

4. Resolve ImproveOSM tiles

Before you switch back to MapRoulette, take a few seconds to activate the ImproveOSM missing roads layer, selecting the tiles affected, and click ‘Solve’ in the ImproveOSM panel. You can drag to select multiple tiles easily.

5. Repeat

You can now return to MapRoulette and click ‘I fixed it’ if you added the missing roads. If there was no appropriate aerial imagery, or you weren’t sure what to add, you can click ‘Too difficult / couldn’t see’. In case the roads that ImproveOSM thought were missing were already added by another mapper in the mean time, select ‘Already fixed’.

Now you can return to step 2 and continue adding missing roads. Happy mapping!

Want more?

If you would like to see a MapRoulette challenge for your area, please contact me!

New version of OpenStreetCam JOSM plugin with sign detections

Posted by mvexel on 4 April 2018 in English (English)

The Telenav OSM team just released a new version of the OpenStreetCam JOSM plugin. The major new feature is the ability to show and manipulate street sign detections. Images in only a few areas are currently processed for sign detection, so it’s not very likely that you will see anything yet, but that will change over time as we catch up processing over 140 million images.


To enable detections, right-click on the OpenStreetCam layer in the Layers panel, and check ‘Detections’ under ‘Data to display’. You can filter the detections by the following criteria:

  • Not older than – show only detections (or images) from that date or newer.
  • Only mine – show only detections / images from my own OSM / OSC account.
  • OSM Comparison – show detections based on comparison with OSM data:
    • Same data – Only show signs that have corresponding tags / data already mapped in OSM
    • New data – Only show signs that do not have corresponding data in OSM and need to be mapped
    • Changed data – Only show signs that have existing tags in OSM but the value is different (for example a 50 km/h sign and the OSM way is mapped as 60 km/h)
    • Unknown – No match could be made between the detected sign and OSM data
  • Edit status – show detections based on manually set status of the detection:
    • Open – new detection, status not changed yet
    • Mapped – manually marked as mapped
    • Bad sign – manually marked as a bad detection
    • Other – other status
  • Detection type – show only signs of the selected types.
  • Mode – Show only automatic detections, manually tagged detections, or both.

For the filters OSM Comparison, Edit status and Detection type, you can select multiple values by using shift-click and command/ctrl-click.

In the main editor window, you can select a sign to load the corresponding photo, which will show an outline of the detected sign. If there are multiple signs in an image, you can select the next one by clicking on the location again. (This is something we hope to improve.)


In the new ‘OpenStreetMap detections’ panel, you can see metadata for the detection, and set the status to Mapped, Bad Detection, or Other. By marking signs that are not detected correctly as Bad Detection, you hide them from other mappers, and we will use that information to improve the detection system.

The plugin is available from the JOSM plugin list, and the source is on Github.

New MapRoulette beta

Posted by mvexel on 28 March 2018 in English (English)

Spanish language version here

Hi all. I want to introduce the new MapRoulette version and invite you to try it. It is currently in beta and feedback and ideas for improvements are very welcome. This information also appears in the wiki section of the MapRoulette GitHub repository. You are welcome to submit issues there. I am looking forward to your feedback!

MapRoulette is a micro-task web tool for OpenStreetMap. It gives you small Tasks you can complete in under a minute to improve OpenStreetMap. Anyone can create groups of tasks, called Challenges, that the community can complete together.

This is the third major version of MapRoulette. The website has been completely redesigned and contains a lot of new features compared to the last major release.

MapRoulette 2 and 3 side by side

Here are some of the most visible new features.

Better ways to discover Challenges you are interested in has been the single most requested improvement. We have spent a lot of time thinking about this, and listening to your feedback. We think you will really enjoy the new ways MapRoulette offers to discover interesting Challenges for you to work on.


Challenge authors can now assign a category to their Challenge, such as Roads, Buildings or Land Use. You can use these categories to quickly narrow down what is interesting to you.


MapRoulette 3 features much improved location based filtering. You can limit your Challenge search to the current map view as you zoom and pan around, and can start the map on an area surrounding your Home Location that you’ve setup in your OpenStreetMap settings.

Free text

You can use the free text search field to narrow down the list of Challenges to match any text you enter. MapRoulette will search Challenge titles and descriptions for you.

Challenge List

A list of Challenges that match your filter results is now always visible on the left side of the MapRoulette window. It will update in real time as you select filters from the drop down menus, use the free text field, and pan and zoom the map.

Map Display

MapRoulette will now show you where the Tasks in a Challenge are located when you click on a Challenge in the list. As the Task information loads, MapRoulette will first display a bounding box to give you a rough idea. When the Task locations are loaded, you will see them on the map. If there are many, they will be clustered. Zooming in will then show you individual Tasks. You can click on a Task to work on it.

Working on Tasks

MapRoulette now gives you more freedom to decide how you want to work in MapRoulette.

Random or Nearby

The name MapRoulette suggests an element of chance. Tasks within a Challenge used to be served completely at random. This meant that you jump around the map as you work on Tasks. Not everyone appreciated this. We received a lot of requests to offer a way to work on Tasks in a specific area. MapRoulette now offers this. After starting a Task, you can decide if you want your next Task to be one nearby or a random one from the same Challenge. MapRoulette will remember your choice for that challenge.

To change this setting while working on tasks, look for the Random / Nearby switch in the More Options area.

Tracking Tasks

MapRoulette now lets you track a Task. This is useful if you want an easy way to come back to a Task later. When you track a Task, it will be added to the list of tracked Tasks in your Profile page.

To track a Task, click the Track switch in the More Options area.

Saving Challenges

If you like a particular Challenge, MapRoulette now offers an easy way to save it. When you return to MapRoulette, your saved Challenges will always appear at the top of the list.

To save a challenge, click on the title to reveal the details, and then click ‘Save’. You can ‘Unsave’ in the same way.

Working Together


MapRoulette lets you comment on individual Tasks. You can use this feature to let other mappers know why you skipped a Task or marked it as Too Hard, for example. The Challenge author will also be able to review comments, perhaps to make improvements to the Challenge. So you can use comments to let the author know your feedback as well.

To comment on a Task or review previous comments, look for the comment field below the Task instruction.

Virtual Challenges

A new concept in MapRoulette is the Virtual Challenge. This is still very much a work in progress and something we would really like your feedback on. A Virtual Challenge is an impromptu Challenge you can create yourself out of the available Tasks for the area you are interested in. This lets you systematically solve all MapRoulette tasks, across Challenges, in your area. This can be fun and useful for a Mapping Party!

To create a Virtual Challenge, go to the main Challenge list view by clicking on Challenges in the top menu. Next, use the map to zoom in to the area you are interested in. When zoomed in far enough, you will see that individual tasks are loaded and displayed on the map. You will also notice that a button ‘Work on mapped Tasks’ appears at the top of the Challenges list. By clicking this button, you create a Virtual Challenge that consists of all the currently visible Tasks. If you want, you can use the filters to narrow down the Tasks further before you create your Virtual Challenge.

Social Sharing

When working on a challenge, it’s now easy to share a link via email or on selected social networks using the social sharing area near the bottom of the task sidebar.

Go here to try the new version:

Trunk in a funk

Posted by mvexel on 6 October 2017 in English (English)

Here is how Wikipedia defines “Trunk road”:

A trunk road, trunk highway, or strategic road is a major road, usually connecting two or more cities, ports, airports and other places, which is the recommended route for long-distance and freight traffic. Many trunk roads have segregated lanes in a dual carriageway, or are of motorway standard.

‘usually’.. ‘many’.. Adverbs that serve to muddle the definition: I still don’t know whether a specific road can be classified as a trunk or not.

The OSM wiki has this to say:

Use highway=trunk for high performance or high importance roads that don’t meet the requirement for motorway. In different countries, either performance or importance is used as the defining criterion for trunk – see #International equivalence and Highway:International equivalence for guidance on road classification in different countries.

Hmm. Equally noncommittal. But there are reference to places where more specific references are to be found. I am interested in the United States. So let’s look there. The ‘International Equivalence’ section on the highway=trunk page says:

Surface expressway: A relatively high-speed divided road (at least 40 MPH with a barrier or median separating each direction of traffic), with a limited amount of intersections and driveways; or a major intercity highway. This includes many U.S. Highways (that do not parallel an Interstate) and some state highways. Wikipedia reference

..whereas the separate ‘International Equivalence’ page says for trunks in the United States:

Limited access highway with occasional grade level intersections, or major intercity highway where no motorway exists.

Not precisely the same, but I am starting to see a pattern. The definition of trunk, according to the people who wrote the wiki pages, seems to be a mix of technical and functional road classification:

  • Technical: Designed for speeds > 40 MPH, limited at-grade intersections.
  • Functional: Major inter-city highway where no motorway exists.

Let’s try and apply this to some major roads in Utah that I know well and are currently at least partly marked as trunk. (This Overpass query shows all trunk ways in Utah.)

US Highway 6 between Spanish Fork and I-70, currently marked as trunk in OSM. This is a two lane road with a speed limit of 65 MPH, with some exceptions in places. It is the main connection between the Wasatch Front and southeast Utah and southwest Colorado. There is no freeway alternative. **Conclusion: proper trunk.

State Route 154 or Bangerter Highway as it is known locally. Currently marked as trunk but some stretches are marked motorway as well. It is a 4-6 lane divided highway. Some sections have at-grade intersections (Continuous Flow Interchanges among them) but they are spaced pretty far apart. SR 154 is not a major inter-city highway, and there is a reasonable freeway alternative available. However, SR 154 does serve an important connector function between cities and towns west of Salt Lake City and the SLC International Airport. Conclusion: trunk is OK, but motorway sections should be downgraded.

US Highway 89. Currently only marked trunk between Farmington and I-84, where it meets the technical (if not the functional) definition of trunk. Most of the rest of US-89 is two-lane road with a speed limit of 65 or 70 MPH, with local exceptions. If you look at it purely from a functional perspective, only the stretch between Brigham City and the WY border in the North, and the (long) stretch from Provo south to the AZ border can be considered trunk. The section actually marked trunk currently is not part of either of these two. To my mind, the sections that serve important long distance connecting functions should be trunk as well. Conclusion: more sections should be trunk.

Looking at a few of the roads I know and their current tagging in the context of the current wiki definitions, my overall conclusion is:

A road should be tagged trunk in the United States if either of the following conditions are met:

  1. The road is designed for speeds > 50 MPH and has limited at-grade intersections.
  2. The road is a serves an important inter-city connector function, and there is no freeway alternative.

Small stretches where condition 1) is not met, for example a reduced speed limit in a built up area, should be tagged trunk to maintain a continuous classification.

Pretty? No. Works for me? I think so. What do YOU think?