2013-03-25 76 views
0

我需要分析一组python中的GPS坐标。我需要找出最常出现的位置。鉴于GPS数据的精确性问题,位置的精度不是很高。难explan(和搜索对谷歌的相关信息),因此一个例子:Python:在一组GPS坐标中找出最常见的位置

  • 我从家里每天开车上班2个月
  • 我开始了我的GPS记录每次行程,并在年底停止行程
  • 偶尔的,我去别的地方

如果我跑我需要分析其中驱动器启动和停止,以让我们说20米的位置半径精确坐标的剧本,我会找到的最常见的地方是我的家和我的工作(每个半径20米)。我在哪里停放在这个半径内并不重要。

python中是否有可执行此类操作的库?你有什么建议?

感谢

+0

为了降低精度,我只是放弃最后几位数字。 – CoffeeRain 2013-03-25 20:15:04

+1

根据lat/long计算2点之间的距离非常简单...这是毕达哥拉斯定理的东西。由于您的坐标数量相对较少(仅限开始和停止),只需执行一些简单的数学运算即可,无需库。 – Endophage 2013-03-25 20:21:03

+0

@Endophage ......我看到了,不需要考虑地球曲率? – otmezger 2013-03-25 20:22:59

回答

0

计数最频繁的地方,一个简单的办法是逗号后只使用latitdue /经度小数点后第3位,或更好轮3个位数。

在aequator:

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

然后,您可以使用散列表,与e,g 1000相乘以除去3个小数点, 并作为java.awt.Point存储在散列表中。

有更好的解决方案,但这是第一个想法。

+0

我不认为这是一个好主意,因为如果我有一个点之间的2“4位数”,它会得到舍入错误 – otmezger 2013-03-25 20:28:04

+0

位于该3位网格的边界上的一个点可以落在另一个网格中。但在60米至100米的光栅上可以,然后在最糟糕的情况下,如果您的停车位有所不同,您的家中有两个热点。所有其他解决方案都需要高度特殊的地理空间知识知识。 (例如使用PMR四叉树等)您可能会阅读Hana Samet:多维和度量标准搜索结构的基础。 – AlexWien 2013-03-25 21:23:05

+0

更新答案,将其舍入为3位数字。 (想象一下像棋盘一样的灵魂,以及你驾驶的轨道,就像面包屑一样,当面包屑落在它上面时,你会增加每个国际象棋场地的反作用力。) – AlexWien 2013-03-25 21:24:32

1

如果你在你去的地方最感兴趣,你可以从每个驱动器以第一和最后一个点考虑,只有当你有超过X时间取中间点。也许如果你在过去的数据点的平均速度小于某个阈值。这会使应用某种聚类技术变得更容易(如k-means clustering)。

可能派上用场的东西是使用approximate nearest neighbors找到任何给定的点相对靠近点的集合。要从图形中取出一个页面,你甚至可以尝试在所有数据点的空间上叠加一个精细分辨率的网格,并且为每个点在这个网格上制作一个小半径的图示。每次添加一个图示时,您都可以累积您在该点上花费的时间,然后随着时间的累积,保持跟踪网格中的点数。

相关问题