比如,我已经获得了某个用户第一天和第二天的所有gps定位信息,(每隔1s取一次,得到的点在地图上连起来就可以表示当天用户的轨迹了,跟【咕咚运动】那样)
现在,我的需求是比对这两天的运动轨迹,知道它们哪些部分重合,哪些部分不一样(当然允许一定的误差)
更形象一点来说明我的需求,(下面每个字母表示一个定位的点):
第一天:A --B --C--D-- E-- F--G-- H-- I--M-- N
第二天:A'--B'--X-- Y-- Z--C‘--D'--E'-- F'--G'-- H'--I'--H''--G''
那么,最终我应该知道第二天多走了--X--Y--Z--这一截,而且H''--G''和第一天的M--N不一样,其他轨迹大致重合(当然允许一定的匹配误差。)
我只求给个解题思路,或者告诉我哪些算法可能会解决这个问题。
========分割线=========
我原本想通过比对对应的两个点是否相等(或者距离很近),但是即便很多的点不一样,但最终这些点连起来的轨迹却【可能】是一样的。
我用的是百度地图提供的android sdk。(不知道百度地图有没有提供类似功能的api,不过据目前的我判断,是没有的)
我也想过一种思路:找出那些能够对应到知名地点的点,然后只匹配这些点。但是1.地图定位是有一定的误差的,2.并不是所有的地点都能够对应到。比如我在教学楼的定位信息,反编码之后会认为我在旁边的公路上,而且地图上也并未显示出有教学楼这个建筑。
======================
求助,只求给个分析思路,如果有详细的解答,那肯定是再感激不过啦!
------解决方案--------------------
我明白你大概的设计思路了。是这样。你的这个思路目前IOS的系统位置历史功能实现了一半,他可以通过你在某点停留的时间段特点,推算哪里是你的公司,哪里是你的家,哪里你偶尔去,哪里你只去过一次等等。但是你需要比他更近一步统计他可能的意图。这个我觉得比较困难,首先百度这个API就不纯熟,无论是基站反推地址,还是坐标反推地址,都有问题。反推的地址成功率有7成就算运气不错。地址推断坐标还稍微好一点。这也就导致“附近”这个功能百度只能实现在地图上点附近,不能靠地址查附近(网页上,你用地址查附近其实还是通过搜一个某模糊地址的点,来查找其附近,最近有所改进,一些模糊地址有区域的概念了)。
然后就是路径和停留地点的问题。目前IOS只做到了统计地点,并不包含路径。从你的需求上,我看出应该你也是只关心目标的停留地点吧。目标不同的行进方式应该不是最重要的。所以可以考虑IOS系统的做法,通过统计时间段来确定某设备在某个区域停留多长时间,来推断此处的可能性,然后再把地图标点展现给客户。靠坐标解析统计附近,不能说不行,但是可能数据出来后你会发现垃圾数据太多,意义不大。