Osmlint to detect errors in OSM
ߊ߬ ߟߊߦߟߍ߬ߣߍ߲߬ ߦߋ߫ Rub21 ߓߟߏ߫ 2 March 2016 ߦߋ߫ English ߟߋ߬ ߘߐ߫ ߟߊ߬ߞߎ߬ߘߦߊ߬ߟߌ߬ ߞߐߟߕߊ 3 March 2016 ߘߐ߫We have been developing OSMLint as a tool identify common geometry and metadata problems OpenStreetMap data. OSMLint processes vector tiles with turf.js and TileReduce to produce geojson files of detected data errors.
In this post, I will demonstrate using OSMlint with OSM-qa-tiles to detect errors in OpenStreetMap.
- Clone my sample repository and install required software.
git clone https://github.com/Rub21/run-osmlint
cd run-osmlint
./install.sh
- To run this for your country, run the
worker.sh
. The worker.sh requires 2 parameters: - input vector tiles, get them from the OSM-QA tiles website,
- boundingbox of your area.
sh
./worker.sh https://s3.amazonaws.com/mapbox/osm-qa-tiles/latest.country/brazil.mbtiles.gz "[-73.975067, -34.108073, -34.512177,5.5056583]"
The script runs all the available linters and produces a gist file that you can visualize.
If you want to run a specific linter, check out sample commandes here: https://github.com/Rub21/run-osmlint#executing-the-comands
We are continuing this work by adding more linters, if you have any suggestions, check out the code or open a ticket.
Discussion
ߡߙߌߣߊ߲ ߞߊ߬ ߝߘߊ߫ d1g ߟߊ߫ 4 March 2016 at 23:45 ߘߐ߫
Lovely dashboard! “Filter data” is a gem, but unexplained/no docs.
I would recommend to explain how to write and process amenity=cafe+name=Cafe Mirage -> amenity=cafe+Mirage using OSMLint - so users are not afraid of new interfaces and workflows (because common tasks are the same).
Could you please create sample code how to detect disconnected graphs (connected components with less 20 ways)? It is possible?
More platform independent code would be nice in examples (Java / Python)
ߡߙߌߣߊ߲ ߞߊ߬ ߝߘߊ߫ Rub21 ߟߊ߫ 9 March 2016 at 15:51 ߘߐ߫
Hello d1g:
There are basic examples of code:
Bridge tag on Node: https://github.com/osmlab/osmlint/blob/master/validators/bridgeOnNode/map.js
Filter data from last 7 days:
https://github.com/osmlab/osmlint/blob/master/validators/filterDate/map.js
if you want to filter data, you can only use
if
sentenceshttps://github.com/osmlab/osmlint/blob/master/validators/bridgeOnNode/map.js#L7-L12
About your question
amenity=cafe+name=Cafe Mirage
here is the example:
The result on gist : https://gist.github.com/anonymous/4f2ec7eda3b15b6544f3
The result on dashboard : http://rub21.github.io/geojson-dashboard/#https://gist.github.com/4f2ec7eda3b15b6544f3
Cheers,
Ruben
ߡߙߌߣߊ߲ ߞߊ߬ ߝߘߊ߫ Rub21 ߟߊ߫ 9 March 2016 at 16:02 ߘߐ߫
Hey d1g, For the above the example, I used peru.mbtiles
osmlint namecafeonamenity --bbox="[-81.462250,-18.417079,-68.542328,0.24169850]" peru.mbtiles>peru.json
ߡߙߌߣߊ߲ ߞߊ߬ ߝߘߊ߫ d1g ߟߊ߫ 8 April 2016 at 18:56 ߘߐ߫
Yes, thank you for examples in repo!
It is easier to learn new tools when you can compare apples from one tool to apples in other tool (and especially if it was done before).