如何基于质心的固定半径对经纬度数据进行聚类作为唯一约束?

How to cluster latitude-longitude data based on fixed radius from centroid as the only constraint?

我有大约 20 万个纬度和经度数据点。我怎样才能对它们进行聚类,使每个聚类的纬度和经度点都严格在距质心 radius = 1 公里的范围内?

我在 R 中尝试了 leadercluster algorithm/package,但尽管我指定了半径 =1 公里,但它并没有严格执行它,即它给出了很多点的集群,比如距离集群质心 5 - 10 公里也在同一个集群。所以不符合我的要求。

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

有没有办法在分层或其他聚类算法中强制执行严格的半径约束?我正在寻找 R/python 中的步骤和实施。 我尝试在 Whosebug 中搜索,但在 r/python.

中找不到解决方案

如何在完成聚类后在 google 地图中可视化聚类质心?

编辑

我在 ELKI 中使用的参数。请验证

这与其说是聚类问题,不如说是集合覆盖类型的问题。至少如果你正在寻找 好的 封面。聚类算法是关于在数据中寻找结构;但您正在寻找一些强制量化。

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

  • Canopy preclustering with T1=T2=你的半径。这应该会产生对覆盖场景的贪婪近似。
  • 完成联动层次凝聚聚类,按所需高度切割。这是相当昂贵的 (O(n^3))。同一个簇中的任意两点最多有这个距离,所以这个比你的要求严格一点。

请注意,您应该使用半正弦 ("geo") 距离,而不是欧几里得!