2013-10-05 27 views
0

有没有人有任何方便的算法可以用来减少地理点的数量?减少地理位置的方法?

我使用的是带有自己的地理点的2,000,000个邮政编码的列表。我正在使用它们从API中收集数据以便脱机使用。该程序是用C++编写的。

我必须通过每个邮政编码,计算一个基于邮政编码的位置的边界框,然后将其发送到API,该邮政编码附近提供了一些数据。

然而,2,000,000是很多处理和一些邮编彼此相邻或足够接近彼此,他们会分享一些相同的数据。

到目前为止,我想出了两种方法,我可以减少他们,但我不知道如果他们的工作:

1 - 程序使用的数据结构来记录邮编重叠其中,然后运行一个程序很少有时间去除那些一个接一个地重叠的人,直到我们没有没有重叠的邮政编码。

  1. 从英国左上角的地理位置开始,慢慢增加邮政区域的大小,直到我们覆盖整个英国。

是否有一种简单的方法来减少这些数量的邮编,以便我尽可能少地重叠?同时仍然确保我获得尽可能多的英国数据?我认为可能有一个方便的算法,人们使用其他地方。

回答

1

您可以使用四叉树,特别是quadkey。一个quadkey绘制曲线上的点。这类似于将点排列成网格。然后,您可以遍历网格在树中更深入地搜索。您也可以搜索中心点。您还可以使用具有空间索引的数据库。它取决于数据重叠的程度,但用四叉树可以选择网格的大小。