我正在使用GeoLife GPS数据集。数据集包含格式为的GPS数据点 latitute /经度/日期(年,月,日,小时,秒)。 99%的坐标围绕北京的坐标。 GPS用户主要是在北京周围徒步旅行的“步行者”。
整个数据集包含18670个轨迹。我想拉大约1000个左右,其中包含给定阈值的零星交叉点。例如,如果某些轨迹经常相交但只是非常快的一段时间(少于2/3秒),我想跳过它们。
然而,如果存在相交超过30秒的轨迹,我想识别这样的轨迹。
我想通过算法了解找到这样一个子集的最佳方法是什么。
我正在识别十字路口如下。我在北京坐标上创建了一个100km×100km的大型边界框。所有的GPS数据点都在这样的边界框内,没有例外。
我创建了100m x 100m的小型边界框,每个数据点最终都落入其中。
交叉点由轨迹ID标识,轨迹ID包含在相同的100米x 100米铲斗网格中。
我可以浏览每个包含100米x 100米网格的1000 x 1000矩阵,并检查100米x 100米网格中包含的数据点是否与其余网格重叠超过阈值。
我不确定这是否是最好的方法。
最终将用Java编码。
答案 0 :(得分:0)
您可以使用k阶voronoi图并按区域大小对其进行排序。然后,您还可以使用群集并删除较小的区域。 VD也用于最短路径规划,例如用于机器人的地图和移动。