我有一套含有成千上万的地址。如果我可以得到的经度和纬度的每个地址,如何分割的组成的团体通过邻?

另外,我可能要重新尝试'群'根据不同的规则:

  • N组
  • M地址,每组
  • 最大间距离的任何地址在一组
有帮助吗?

解决方案

你可以试试 k-聚集装置 算法。

其他提示

你想要的矢量化:

http://en.wikipedia.org/wiki/Vector_quantization

"它的工作原理是将一个大集点(载体)成的群体具有约同样数量的分接近他们。每个群体的代表是通过其心点,因为在k-装置和其他一些集群的算法。"

这里的载体的地理坐标的每个地址,你能养活你的算法与其他参数,这取决于你的约束(近,集团的大小、数量的团体...).

你可以开始k-手段,但是从我的经验一个泰森基础的算法更加灵活。一个很好的介绍 在这里,.

它取决于一位上的比例的数据你想要的集群。的暴力的方法是计算之间的距离所有的结合点的距离阵列。得到的阵列的N^2和因为距离,从A到B的相同B中的一个,你只需要一半,因此产生集N^2/2号.

对于相对较近经度纬度坐标你有时可以得到与使用lat长作为x、y网和计算笛卡尔的距离。由于现实世界的不平笛卡尔的距离会有错误。为了更精确的计算,这应当使用如果你的地址是位于全国各地,看到 这个链接Mathforum.com.

如果你没有的规模,以处理整个距离矩阵,你会需要做一些算法的编程,以提高效率。

"N群体"和"M地址,每组"的限制是相互排斥的。一个暗示。

  1. 建立一个矩阵之间的距离的所有地址。
  2. 开始随机地址,排序矩阵的上升到距离那个地址
  3. 除去的地址矩阵的你走,地方的地址最近的地址开始进入一个新的集团,直到你达到你的标准(小组或者最大距离)。
  4. 一旦一个集团是全面的,选择的另一个随机地址和度假村的矩阵的距离那个地址
  5. 继续这样直到所有的地址是采取的矩阵。

如果地址分布均匀,每个小组将有一种圆形开始的地址。问题来的时候开始的地址附近的现有团体。当发生这种情况,新的小组将种围绕旧,甚至可能圆它完全如果你停止的标准,仅仅是集团的大小。如果您使用的最大距离的约束,那么这是不会发生(假设没有其他约束)。

我真的不知道如果这是一个很好的方式这样做,但是我会尝试。我敢肯定很多的优化将是必需的。尤其是地址上的边缘。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top