openbmap / radiocells-nlp-android

radiocells.org Unified Network Location Provider
https://radiocells.org
Other
41 stars 13 forks source link

Improve accuracy of location updates and add a usable error estimate in OfflineProvider #19

Closed mvglasow closed 8 years ago

mvglasow commented 8 years ago

Improvements:

Notes:

Using multiple cells for geolocation works only where the full cell ID is available. On 3G/4G, the full ID is only available for the serving cell (for neighboring cells only the PSC/PCI is available until the device connects to that cell). On multi-SIM devices, where there is one serving cell per SIM slot, all cells can be used if they are exposed through the Android API. Note that some devices never report any neighboring cells.

When the reported accuracy is low (several hundred meters or more), this is typically the result of a moved wifi: Suppose the device is picking up n wifis, of which one has moved. This will dramatically increase the error estimate for each location – the outlier will get an error close to the actual distance from the others, while all the others will get 1/n times that distance as an error. The synthesized location will have an error which is slightly lower than 1/n times the distance the one wifi has moved. All of this can be observed in the logs. The location reported will generally be only slightly off (much closer to the actual location than it was previously). The more stationary wifis there are in view, the better the result will be. A possible future improvement could be to identify obvious outliers and ignore them.

Blacklisting is not yet implemented – I had a look at the mechanisms in Radiobeacon today and they're somewhat complex. That will be a future extension – though the current code already provides for some generic filtering (basically a series of if statements) which can easily be extended to filter for other criteria.

wish7code commented 8 years ago

That sounds so cool... I'm excited to test!