GeoDjango:是否有现成的方法生成点的聚类?

1 投票
3 回答
1009 浏览
提问于 2025-04-15 23:13

我正在尝试在Python中使用GeoDjango对一组点进行聚类。

问题是: 给定一组点,输出这些点的聚类结果。 (为了简化,我可以提前指定聚类的数量、每个聚类的大小和距离)

网上有一些解决方案可以进行聚类,所以这是一个比较常见的问题。 我以为GeoDjango可以直接处理这些问题,但具体怎么做还不太清楚——我查阅了GeoDjango的文档、Google和其他一些地方,但没有找到相关信息。

在我自己动手实现聚类解决方案之前,我想问问有没有简单的方法可以使用GEOS或GeoDjango中的其他包来完成这个任务。

3 个回答

-1

如果有人看到这个帖子:

https://github.com/biodiv/anycluster

我把我的geodjango聚类应用开源了。安装之后,你只需要写几行JavaScript代码,它就能进行聚类。你可以轻松地更改一些设置,还可以使用自己的图形。我在github上也添加了一些使用示例……

3

GeoDjango并没有内置的聚类支持;我知道的,通常使用GeoDjango的开源GIS应用程序也不提供这种功能。

一些使用Django/GeoDjango的网站(比如everyblock.com)已经发布了他们的聚类方法,但这些功能并不是GeoDjango自带的。

一般来说,这些应用程序提供的功能是基于底层数据库的支持。GEOS是PostGIS下面的一个库,而在非Java的世界里,当前的技术水平并没有任何聚类的API或行为。

-1

正如Christopher Schmidt提到的,GeoDjango似乎没有现成的聚类支持。不过,如果其他人遇到这个问题,我可以分享一下我做的事情:

  • 安装了mlpy和numpy这两个库
  • 使用了HCluster层次聚类算法
  • 写了一个包装函数,把GEOS点对象转换成mlpy能理解的矩阵

相关文档可以查看: https://mlpy.fbk.eu/data/doc/clustering.html

撰写回答