0

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

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

我必须遍历每个邮政编码,根据邮政编码位置计算一个边界框,然后将其发送到 API,它会为我提供靠近该邮政编码的一些数据。

但是 2,000,000 需要处理很多,并且一些邮政编码彼此相邻或彼此足够接近,以至于它们可以共享一些相同的数据。

到目前为止,我已经想出了两种可以减少它们的方法,但我不确定它们是否会起作用:

1 - 程序使用数据结构记录哪些邮政编码重叠,然后运行几次例程以逐个删除重叠的邮政编码,直到我们没有没有重叠邮政编码的邮政编码。

  1. 从英国左上角的地理点开始,慢慢将其增加一个邮政编码区域的粗略大小,直到我们覆盖整个英国。

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

4

1 回答 1

1

您可以使用四叉树,尤其是四键。四键绘制曲线上的点。类似于将点排序到网格中。然后您可以遍历网格以在树中进行更深入的搜索。您也可以围绕中心点进行搜索。您还可以使用具有空间索引的数据库。这取决于数据重叠的程度,但使用四叉树,您可以选择网格的大小。

于 2013-10-21T13:08:13.177 回答