database - 在数据库中聚类纬度/经度

标签 database latitude-longitude cluster-analysis geography

我想看看是否有人知道如何使用数据库对一些纬度/经度结果进行聚类,以减少通过网络发送到应用程序的结果数量。

有很多关于如何集群的资源,无论是在客户端还是在服务器(应用程序)端......但不是在数据库端:(

This is a similar question , 一位 S.O. 同事问道。成员。解决方案基于服务器端(即隐藏 C# 代码)。

有没有人有解决这个问题的运气或经验,但在数据库中?是否有任何数据库大师正在接受艰巨而性感的数据库挑战?

请帮忙:)

编辑 1:澄清 - 通过聚类,我希望将 x 个点分组为一个区域的单个点。因此,如果我说将所有内容都集中在一个 1 英里/1 公里的正方形中,那么该“正方形”中的所有结果都会被 GROUP'D 成一个结果(比如……正方形的中间)。

编辑 2:我正在使用 MS Sql 2008,但如果其他数据库中还有其他解决方案,我愿意听取意见。

最佳答案

我可能会使用 k-means clustering 的修改*版本使用笛卡尔(例如 WGS-84 ECF)坐标作为您的点。它易于实现并快速收敛,并适应您的数据,无论它是什么样子。此外,您可以选择 k 来满足您的带宽要求,并且每个集群将具有相同数量的关联点 (mod k)。

我会制作一个聚类质心表,并在原始数据表中添加一个字段以指示它也属于哪个聚类。如果您的数据完全是动态的,您显然希望定期更新集群。我不知道您是否可以使用存储过程和触发器来做到这一点,但也许吧。

*“修改”将调整计算质心向量的长度,使它们位于地球表面。否则你最终会得到一堆负高度的点(当转换回 LLH 时)。

关于database - 在数据库中聚类纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330056/

相关文章:

machine-learning - 评估类可分离性

mysql - Rails 5 返回所有记录并包括必要的关联

node.js - Node JS 中的最大可写流

java - 将像素位置转换为纬度/经度,反之亦然

php - 从 Postcode DB 获取 lat/lng 并在 PHP/MYSQL 中按最近的顺序排序

matlab - K 均值聚类,主要理解问题

java - 重复写入数据库或文本文件

mysql - SQL 数据库连接

javascript - 当用户在文本框中输入地名时,多边形轮廓会出现在地点边框上

r - GGally 中的错误 - 确保您的 'columns' 值小于 5