Python:找出一组GPS坐标中最常见的位置

0 投票
2 回答
1498 浏览
提问于 2025-04-17 20:16

我需要在Python中分析一组GPS坐标,想找出哪个地方出现得最频繁。由于GPS数据的精度问题,位置的准确性并不是很高。这有点难以解释(也很难在谷歌上找到相关信息),所以我举个例子:

  • 我每天开车从家到公司,持续了两个月
  • 每次出发时我都会启动GPS记录器,结束时再停止
  • 偶尔我会去其他地方

如果我运行一个脚本来分析我出发和到达的坐标,假设我设定的精度范围是20米,我会发现最常去的地方就是我家和公司(每个地方的范围都是20米)。在这个范围内我停车的具体位置并不重要。

在Python中有没有什么库可以执行这样的操作?你有什么推荐的吗?

谢谢

2 个回答

0

要计算最常出现的位置,一种简单的方法是只使用纬度和经度小数点后面的前三位数字,或者更好的是四舍五入到小数点后三位。

在赤道上:

4位数字:11米
3位数字:111米
2位数字:1.1公里
1位数字:11.1公里
0位数字:111.111公里(两个经线之间的距离):40,000,000 / 360

接着你可以把这些数据当作哈希表来用,把数字乘以1000,这样就可以去掉小数点后三位,然后把结果存储为java.awt.Point类型在哈希表里。

虽然还有更好的解决方案,但这个方法可以让你有个初步的了解。

1

如果你主要关注的是你去过的地方,你可以考虑在每次行驶中只记录起点和终点,只有在你停留超过x时间时才记录中间的点。也许可以根据你在过去k个数据点的平均速度,如果低于某个阈值,就记录这些中间点。这样做会让你更容易使用一些聚类技术(比如K均值聚类)。

一个可能有用的方法是使用近似最近邻,这样你可以找到任何给定点附近的点集合。

你还可以借鉴图形学的思路,在所有数据点的空间上覆盖一个细分的网格,然后对每个点在这个网格上做一个小的标记。每次你添加一个标记时,可以记录你在那个点花费的时间,并在移动过程中跟踪网格中花费时间最多的点。

撰写回答