寻找相似的地图路径


9

我正在寻找一种算法,当在地图上给定具有诸如坡度/距离/形状/等属性的特定路线时,可以找到一条相似的路线(就属性而言),但该路线始于不同的地点或在地球上的另一个地区。

显然,在几乎所有情况下都不可能找到完美的拟合,但是我正在寻找一种“最佳匹配”类型的系统,该系统应具有理想的测量相似度的方法。

我尝试查找,但是我的大多数查询都提出了“地图匹配”问题或同一路径上GPS点的路线相似性。我可能不知道正确的术语!这个问题有名字吗?我可以使用什么算法来解决这个问题?


1
是否将“路线”限制在线路(道路/路径/等)网络上?您如何防止算法确定最接近的路由是源路由,但只是短一点/长一点?
Spacedman'2

1
“在属性上相似”是有道理的,但它如此模糊以至于它允许各种各样的解决方案。你可以再详细一点吗?
ub

@Spacedman是的,路线仅限于道路网络。目的是要从例如中国走一条公路,找到一条非常相似的路径,例如我的房子。我不确定实现该约束的最佳方法。
克里斯·福斯特

@whuber抱歉。要澄清的是,具有相似的坡度(在路线的相似区域)和相似的总距离是最重要的。
克里斯·福斯特

Answers:


6

地图匹配与您要查找的内容不同。Mapmatching是将误差gps观测值与线性街道网络相匹配的正确方法。您的问题也与GPS点无关。因为您想比较静态路由(非时间)的模式并找到相似的路径。您正在寻找的是线性特征(就GIS而言,不是机器学习)匹配。与GPS轨迹有关的文献是时空模式匹配,它属于“轨迹(时空)模式挖掘”的主题。

有关更多信息,请参阅《使用空间轨迹进行计算》一书中的(轨迹模式挖掘)一章。您将获得许多关于如何比较和对比(即通过方位角,线段长度,弯曲度,直线度等)各种路线或轨迹的想法。


4

您的问题基于矢量数据。但是,我确实认为将问题转换为栅格分析会更好。这样,您还将在某种程度上概括您的问题。

解决您的问题的算法如下:

  1. 栅格化原始路线,并根据您的要求(倾斜度/距离/形状/等)使每个像元带有参数。存在道路的事实也是一个参数。这将成为具有n个对象的一维列表-> routelist(n)

在此处输入图片说明

  1. 找到一个您知道至少有一个原始路线副本的测试区域。使用与原始路线相同的参数栅格化该区域。这是栅格

在此处输入图片说明

  1. 从栅格a中的像元1,1开始,然后有序地遍历整个栅格。
  2. 对于每个单元,都会调用一个函数。此函数检查单元格是否对应于routelist(0),如果是,则对周围的单元格进行相同的检查。成功后,该功能将继续检查单元格中的routelist(1),依此类推。如果一直成功到达routelist(n),则将坐标存储为routelistcopy(n)中的替代路线
  3. 重复直到到达栅格中的最后一个像素。

在此处输入图片说明

在上方,您将根据路由列表中的参数看到三个路由选项。

此外:

  • 上面的样本栅格仅根据一个参数进行测量。在您的现实世界中,一个像素将是多个参数的组合。
  • 如果执行此任务,我将尝试以递归方式编写上述函数。这样会更有效率,并且可以解决“分散轨道”的问题-在这种情况下,您会有多个起点相同的替代轨道。
  • 您的路线转弯不算问题。这意味着答案是按照与原始路线相同的顺序连接的像素列表。曲折不是问题。您可能必须编写算法,以使自相交路线不属于解决方案的一部分。
  • 设计算法,以便您可以为进行中的条件设置不同的容忍度。这将为您提供更大的灵活性。
  • 在手术设置中,通过根据您的要求筛选像素出现的区域,可以使整个过程更加高效。如果不存在,则调查区域为负值,因此没有理由花时间分析该区域。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.