PostGIS中的集群点

Mik*_*ike 8 php gis postgresql postgis geolocation

我正在构建一个应用程序,它从数据库中提取lat/long值并在Google Map上绘制它们.可能有数千个数据点,因此我"聚集"彼此接近的点,因此用户不会被图标所淹没.目前我在应用程序中执行此聚类,使用这样的简单算法:

  1. 获得所有积分的数组
  2. Pop第一个关闭数组
  3. 将第一个点与数组中的所有其他点进行比较,寻找落在x距离内的点
  4. 使用原始点和关闭点创建一个簇.
  5. 从阵列中删除关闭点
  6. 重复

现在我发布这是低效的,这也是我一直在研究GIS系统的原因.我已经设置了PostGIS并将我的lat和long存储在POINT几何对象中.

有人可以让我开始或指导我在PostGIS中简单实现这种聚类算法的一些资源吗?

Mik*_*ike 2

我最终使用了snaptogridavg的组合。我意识到有一些算法(即丹尼斯建议的 kmeans)可以为我提供更好的集群,但对于我正在做的事情来说,这是足够快和准确的。