【发布时间】:2013-12-09 16:44:16
【问题描述】:
我正在使用 GeoLife GPS 数据集。数据集包含格式为的 GPS 数据点 纬度/经度/日期(年、月、日、时、秒)。 99%的坐标都围绕着北京的坐标。 GPS用户多为步行北京周边的“步行者”。
整个数据集包含 18670 条轨迹。我想拉出大约 1000 个左右,其中包含给定阈值的零星交叉点。例如,如果某些轨迹经常相交,但只在非常短的时间内(少于 2/3 秒)相交,我想跳过它们。
但是,如果存在相交 30 多秒的轨迹,我想识别这些轨迹。
我想从算法上知道找到这样一个子集的最佳方法是什么。
我正在识别交叉点,如下所示。我在北京坐标上创建了一个 100 公里 x 100 公里的大边界框。所有的 GPS 数据点都在这样的边界框内,也不例外。
我创建了 100m x 100m 更小的边界框,每个数据点最终落入其中。
交叉点由轨迹 ID 标识,轨迹 ID 包含在同一个 100m x 100m 桶网格中。
我可以遍历包含 100m x 100m 网格的每个 1000 x 1000 矩阵,然后检查任何 100m x 100m 网格中包含的数据点是否与其余网格重叠超过阈值。
我不确定这是否是最好的方法。
最终会用 Java 编码。
【问题讨论】:
-
我认为您不会以这种方式获得所有热门歌曲。我不知道采样率是多少,但假设对象运行得足够快,以至于数据点错过了 100m x 100m 方格?如果对象在样本之间移动超过 100m,则可能发生这种情况。
-
很抱歉在您评论后更改描述。我已经更新了我的要求和我想做什么。我考虑了一下,只拉最高的相交轨迹对我的项目来说是不值得的,所以我现在专注于拉出具有高相交时间(由阈值给出)的轨迹,例如可以有相交的轨迹仅 2 或 3 次,但超过时间阈值(例如 30 秒)
-
你能告诉我们更多关于什么是交叉路口吗?步行者是否必须在同一个地方停留超过 30 秒才能计数?或者,如果一个步行者与前一个步行者的路线重叠,仅仅 3 天后,这算不算?另外,您是否将交叉口视为在
-
嗨,安迪。交叉口被认为是 2 个步行者,它们同时在 100m x 100m 的盒子内停留 30 多秒。类似于两列火车行驶不同的路线,但可以在同一站停留一段时间,从而允许一些火车从一列火车换乘另一列。如果传输时间太短(几秒钟),没有人可以传输,但如果传输时间超过 30 秒,则可以成功传输。在我的应用程序中,交叉点意味着两个无线电在通信范围内(接近),并且需要 30 多秒才能在两者之间运行一些协议。
标签: java algorithm sorting geolocation