如何将基于来自质心的固定半径的纬度 - 经度数据聚类为唯一约束?

时间:2016-05-28 14:38:33

标签: google-maps cluster-analysis geospatial latitude-longitude hierarchical-clustering

我有大约200k纬度&经度数据点。我如何对它们进行聚类以使每个聚类具有纬度和范围。经度点严格在半径范围内=距离质心仅1公里?

我在R中尝试了leadercluster算法/包,但是虽然我指定半径= 1 km但是它并没有严格执行它,即它给出了很多点的群集,比如群集质心中的5-10 kms也在同一群集内。所以它不符合我的要求。

群集中的点数可以变化&这不是问题。

有没有办法在heirrchical或其他聚类算法中强制执行严格的半径约束?我正在寻找步骤&在R / python中实现。 我尝试在stackoverflow中搜索但无法在r / python中找到解决方案。

如何在完成群集后可视化谷歌地图中的群集质心?

修改

我在ELKI中使用的参数。请验证 enter image description here

1 个答案:

答案 0 :(得分:1)

这不是一个集群,而是设置封面类型的问题。至少如果你正在寻找一个好的封面。聚类算法是关于在数据中查找结构;但是你正在寻找一些强制量化。

无论如何,您可以尝试以下两种策略:在ELKI:

  • 冠层预聚类,T1 = T2 =您的半径。这应该会给封面场景带来贪婪的近似。
  • 完成连锁分层凝聚聚类,在所需高度切割。这相当昂贵(O(n ^ 3))。同一群集中的任何两个点最多都有这个距离,因此这比您的要求更严格。

请注意你应该使用半径(" geo")距离,而不是欧几里德!