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!
- Diary post and POC by Joost Schouppe (8/2016)
- Birds of a feather session at State of the Map 2016
- Project page in OpenStreetMap wiki
- Talk at FOSS4G Belgium 2017 by Ben Abelshausen
- Talk at State of the Map 2018 by Ben Abelshausen
- Open Summer of Code 2018
- OpenStreetMap Foundation microgrant 2020
- OpenStreetMap Foundation microgrant 2020 - Final report
- Download OpenStreetMap data
- Convert OpenStreetMap data to GeoJSON (keeping only
highway=*
) - Generate buffer around OpenStreetMap data
- Download source data
- Convert source data to GeoJSON (with optional filtering)
- Convert source data to OpenStreetMap tags
- Generate vector tiles from source data
- Download false positive from MapRoulette challenge (optional)
- Generate buffers around MapRoulette data (optional)
- Generate vector tiles from OpenStreetMap (+ MapRoulette) buffers
- Process difference : all the roads from the source data that are not in the OpenStreetMap (+ MapRoulette) buffers
- Update MapRoulette challenge with latest data (optional)
- GDAL 2.1+
- tippecanoe
- (Python, might be needed during TileReduce install)
📉 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) :
process.sh
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 : https://github.com/osmbe/road-completion/blob/master/script/README.md
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.