2013-10-05 58 views
0

有沒有人有任何方便的算法可以用來減少地理點的數量?減少地理位置的方法?

我使用的是帶有自己的地理點的2,000,000個郵政編碼的列表。我正在使用它們從API中收集數據以便脫機使用。該程序是用C++編寫的。

我必須通過每個郵政編碼,計算一個基於郵政編碼的位置的邊界框,然後將其發送到API,該郵政編碼附近提供了一些數據。

然而,2,000,000是很多處理和一些郵編彼此相鄰或足夠接近彼此,他們會分享一些相同的數據。

到目前爲止,我想出了兩種方法,我可以減少他們,但我不知道如果他們的工作:

1 - 程序使用的數據結構來記錄郵編重疊其中,然後運行一個程序很少有時間去除那些一個接一個地重疊的人,直到我們沒有沒有重疊的郵政編碼。

  1. 從英國左上角的地理位置開始,慢慢增加郵政區域的大小,直到我們覆蓋整個英國。

是否有一種簡單的方法來減少這些數量的郵編,以便我儘可能少地重疊?同時仍然確保我獲得儘可能多的英國數據?我認爲可能有一個方便的算法,人們使用其他地方。

回答

1

您可以使用四叉樹,特別是quadkey。一個quadkey繪製曲線上的點。這類似於將點排列成網格。然後,您可以遍歷網格在樹中更深入地搜索。您也可以搜索中心點。您還可以使用具有空間索引的數據庫。它取決於數據重疊的程度,但用四叉樹可以選擇網格的大小。