这是一个真实世界的用例。例如,从地点 A 到地点 B 的路线可以是不同系列的 lat、lng 点 - 尽管它们从 Street x 到 Road y 再到 High way z 的顺序完全相同,但不同的行程。
不同之处在于位置报告的时间不同(例如每次行程报告位置 1 分钟)并且车辆出现在同一条街道的不同车道上。
那么,您是否对如何计算属于同一条路线的两条不同行程的相似度有一些想法(将不同行程映射到同一条路线的种类)。
这是一个真实世界的用例。例如,从地点 A 到地点 B 的路线可以是不同系列的 lat、lng 点 - 尽管它们从 Street x 到 Road y 再到 High way z 的顺序完全相同,但不同的行程。
不同之处在于位置报告的时间不同(例如每次行程报告位置 1 分钟)并且车辆出现在同一条街道的不同车道上。
那么,您是否对如何计算属于同一条路线的两条不同行程的相似度有一些想法(将不同行程映射到同一条路线的种类)。
我将使用以下方法解决这个问题:
零的分数意味着第二次行程的所有点都位于第一次行程的缓冲区内,而零的分数意味着所有点都位于外部。
您可以将此分数用作差异度的度量,其中 1 表示两次行程完全不同,0 表示完全相似(在给定的缓冲区半径内)。为了完整起见,您可能希望反转折线角色并计算“反向”相似度。然后,您的最终相似度得分可能是两者的乘积。
我通常使用 .NET 在 C# 中实现我的算法,为此我使用 Microsoft 的 System.Spatial NuGet 包。在这里,您可以找到 STBuffer 和 STContains 等方法,它们将极大地帮助实现这一点。
如果我正确理解了您的问题:您在相同的两个起始位置和目的地位置之间有一组路线,并且每条路线都被描述为一组 (lat, lon, time) 元组。
为了计算两条路线之间的距离,一种可能性是应用字符串之间的编辑距离的变体。该算法将两个字符串之间的距离计算为将第一个字符串转换为第二个字符串所需的字符串操作量(编辑、删除、添加字母)。
您只需提出一组“路线操作”,以及每个操作的成本(添加点路线、删除点路线、将一个点路线替换为另一条路线,等等)。