Using Open Street Maps and Kalman Filters to Clean Up GPS Data(blog.hypertrack.io) |
Using Open Street Maps and Kalman Filters to Clean Up GPS Data(blog.hypertrack.io) |
http://nbviewer.jupyter.org/github/rlabbe/Kalman-and-Bayesia...
I have been absolutely shocked and blown away by the accuracy and detail of the maps. In the tiniest dirt street village, with less than 100 people, it correctly maps all the roads and even all the walking trails.
Of course, in the big cities too.
I'm staggered they have this level of detail.
[1] http://osm-analytics.org/#/show/polygon:ivf~DvjpdAgots%40i~s...
OSM is considered a reference for HyperTrack -- they snap to the OSM roads. But I wonder how they [OSM] might've constructed their maps given the similarly noisy GPS samples they likely would've crowdsourced from. Do they use kalman filters/more samples/higher precision GPS reference devices?
Bonus: everything is open source: https://github.com/graphhopper/map-matching including web API, routing engine, easy setup (no DB involved), simple demo UI, ...
Only disadvantage I see: we currently do not support online map matching but this will surely come.
BTW: kalman filters are very similar to our approach (hidden markov model).
BTW2: Their FAQ is ridiculous: "Do you have competitors? No..." There are many companies with tracking and also open source products ...
Besides OSM data source are not limited to individual's GPS traces, they also include publicly available satellite imagery, official data released by government agencies under appropriate licenses. E.g. In the United States, OSM uses Landsat 7 satellite imagery, Prototype Global Shorelines from National Oceanic and Atmospheric Administration (NOAA). They have managed to get their hands on high quality data sources in a lot of countries.
[1] https://blog.openstreetmap.org/2013/04/12/bulk-gpx-track-dat... [2] https://github.com/mapbox/mapping/wiki
Mark One Eyeball.
OSM mappers manually convert the GPS traces to roads/features. You load the GPS trace into your editor, like a background layer. Then you draw in the road based on the GPS trace, and your common sense. But now-a-days aerial imagery is used a lot instead of GPS data.
This probably doesn't apply to remote/rural/country-side areas, and for trails. In those cases, it's probably the other way around.
In OpenStreetMap areal imagery is a great help, but not the single source of truth. For mappers those images are a good starting point, but there are always other objects near it that can be used as a reference, so that new objects are placed relatively to it.
One single GPS trace is not very meaningful, but if you take several of them into account - optimally from different users with different devices - outliers become more visible and a smoothened path can be derived from it.
OpenStreetMap has a theoretical resolution of a centimeter, but in reality such a precision is not necessary as the devices that are used for consuming maps have a limited accuracy. So if the path is -/+ 5 m, that's fine for us.