我正在制作一个应用程序,用户可以在旅行日常路线时将GPS数据从手机保存到服务器。例如,他们正在从家到工作。 GPS数据存储在数据库中。
现在,用户想知道也许有更多人在这条路线上旅行。我想比较不同的用户路由,并向用户提供例如来自其他用户路由的3-5个最佳匹配。
重要的是比较整个行程,因为用户可以加入他们的路线并从某个点开始一起工作,而不仅仅是从开始和结束。另外我认为重要的是用户视图中的目标点,谁正在搜索其他用户路由。其他用户路线必须靠近搜索者路线终点。
有两个因素 - 时间和地点。一个用户驾驶汽车而另一个用户走路并乘坐公共汽车。走路的人会提前开始他的行程,而另一个人则是因为他更快地沿着这条路走。在某个时间点,他们的路线是匹配的。
如何比较路线?那有算法吗?我是否需要比较路线中的每个点?
答案 0 :(得分:1)
基本上,你所说的是路由算法和旅行销售人员的组合
最常见的路由算法是大约50年前由Dijkstra发明的,并且计算了在定向网络中从点a到点b的最佳方式 - 在路由应用中,这意味着每条道路都被表示作为网络中的边缘,并且每个边缘与“成本”相关联,即沿着道路行驶所花费的时间,或平均速度,或者在您的情况下,将是在该路线上行进的人数。
t raveling sales man略有不同但也相关,试图优化访问的节点数量 - 在您的情况下,它可能正在解决相反的问题,因为它试图最大化城市数量(边缘) - 交叉节点)同时最小化前往所有节点的成本 - 如果你想解决这个问题,值得了解
答案 1 :(得分:0)
见GIS - 这是一个(巨大的)研究领域 - 非常有趣但非常强烈
答案 2 :(得分:0)
我认为您需要做的是将从手机获得的GPS坐标转换为路线。看看这个Open Route Service项目的Open Street Map。
一旦你将每个人的纬度和经度转换为一组共同的路线,那么比较他们的路径就会更容易,看看他们是否有共同点。您还可以执行搜索备用路线等操作。也许一个人通过几英里/公里的旅行可以和另一组4-5人一起旅行,他们基本上朝着同一个方向前进。这样的事情。