作者:知乎用户
链接:https://www.zhihu.com/question/22697683/answer/105787073
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
为了使移动轨迹“正常”,无外乎1-提高定位精度;-根据已知信息,“修正”位置
关于提高定位精度
单纯使用GPS方式(低成本硬件),所能提高的精度,已经到上限了;
利用多种定位方式(如增加WLAN定位),能取得不错的精度效果(普通用户的感受)
关于“修正”位置
个人的感觉,百度地图、腾讯地图可能已经有限度地使用了此类“修正”位置的算法,没时间提供来源,有兴趣的同学可以反编译软件包看下。当然,也很可能,算法被封装在了API内,这种呢可以模拟GPS轨迹做下测试
算法如何实现呢,可以开点不负责任的脑洞
1 根据速度,判断用户在车上还是步行;根据方向,判断在路的哪一侧。就获得了匹配的目标线
2 简单粗暴的算法,直接将位置匹配到目标线上最近的边,匹配点选为垂足(可参考下 Digitalizing GPX Points or How to Track Vehicles With GraphHopper)
3 复杂一些的算法,如有多个位置,位置序列能提供更多的先验信息,如方向、方向变化(拐角)信息。这种算法和手写输入算法是相通的,道路是字库里的字,移动轨迹是手写的笔画序列。
算法层面“修正”位置是有副作用的,当用户真的不在“匹配线”上时,匹配反而是糟糕的