Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Road Completion project

Software set-up inspired by "Quality analysis for OpenStreetMap" by Matt Greene from Mapbox


OpenStreetMap (OSM) is extremly good at quickly creating a usable map. It is less good at getting to 100% finished on a specific topic. The last 2% of roads might take forever to get mapped in OpenStreetMap. This project aims to find these 2% with the help of external road data. This can be governement data or machine learned data. We then offer the missing roads as microtasks to the mapping community. This means that after we have "finished" the work, the OpenStreetMap data will be at least as complete as the reference dataset - so any trust placed in that reference can now be place in OpenStreetMap as well!

History of the project


  1. Download OpenStreetMap data
  2. Convert OpenStreetMap data to GeoJSON (keeping only highway=*)
  3. Generate buffer around OpenStreetMap data
  4. Download source data
  5. Convert source data to GeoJSON (with optional filtering)
  6. Convert source data to OpenStreetMap tags
  7. Generate vector tiles from source data
  8. Download false positive from MapRoulette challenge (optional)
  9. Generate buffers around MapRoulette data (optional)
  10. Generate vector tiles from OpenStreetMap (+ MapRoulette) buffers
  11. Process difference : all the roads from the source data that are not in the OpenStreetMap (+ MapRoulette) buffers
  12. Update MapRoulette challenge with latest data (optional)



📉 Statistics about datasets process

Country Region Source MapRoulette
🇧🇪 Belgium Bruxelles/Brussel (Brussels) UrbIS-Adm Challenge
🇧🇪 Belgium Vlaanderen (Flanders) Wegenregister Challenge
🇧🇪 Belgium Wallonie (Wallonia) PICC Challenge
🇽🇰 Kosovo AKK
🇱🇺 Luxembourg TRP-VC Challenge
🇳🇱 Netherlands NWB Challenge


If you want to run the comparison process in your country/region, you simply have to replicate one of the existing regions (for instance, Flanders) :

  • is the comparison shell script (see example)
  • filter.sql is the SQL query to filter your data (see example and usage)
  • convert.json is the tag conversion (from your data to OSM tag(s)) (see documentation and example)

You can find more documentation about the scripts here :


This set-up is ideal if there are relatively few missing roads. If there are whole swats of network missing in OSM, you might consider a tool like Cygnus instead.

The current matching is based on a simple buffer - so both OSM and the ref dataset need to be af high geometric quality to result in a reasonable amount of tasks. However, you are invited to create more advanced comparison processes. Next on our roadmap is adding attribute comparisons, for example to compare street names.