2009-07-09 145 views
5

位置數據本質上是一個樹形結構。因此,當你問某人的地址時,你想知道他們居住在哪個區域/城區,城市/城鎮,州/省和國家。將位置信息存儲在數據庫中的最佳方法是什麼?

這個數據只希望只設置一次,只需要很少的修改。大多數電子商務網站和其他許多網站都需要存儲這種類型的信息,但我正在努力尋找更多信息。也許是因爲我沒有找到合適的術語,但我認爲這將是一個已經解決的常見問題。

這會導致另一個問題。我在哪裏可以得到這類信息,例如哪些地區屬於哪個城市,哪些城市屬於哪些州,哪些州屬於哪些國家?

編輯:爲了使事情更加複雜我希望能夠提供一種通用的解決方案,因爲例如一些國家不使用郵政編碼,他們使用郵政編碼,它是有點相同的事情,但不是相當。我最大的願望是擁有區域/郊區 - >城市/城鎮 - >地區/省/州 - >國家。我可能正在嘗試不可能的事情。

編輯2: 對不起,我可能沒有足夠清晰,但我不需要郵政編碼。只是郊區/地區名稱 - >城市........

回答

1

如果你想獲得美國拉鍊信息看看Tiger。這是來自美國人口普查的信息,將爲您提供所有數據。但是,需要注意的是信息不容易抽象,所以需要一些時間。

0

這比第一次出現更復雜。一些城鎮有多個郵政編碼。一些郵政編碼有多個城鎮。許多地址可以使用主要城鎮或最近城市的名稱。驗證地址不是微不足道的。

如果您想嘗試存儲郵政編碼數據,您可以購買zip code databases。但是您可能會發現使用their tool來驗證USPS更容易。

0

如果你對郵政編碼不感興趣,也許你可以從Wikipedia刮你需要的東西。

0

首先,這裏有兩個截然不同的東西:地理信息和政治/組織信息。 可以共享郵政編碼,但在地理上任何物體都完全位於另一個物體內。

當我們必須解決問題時,我們只需製作一個通用樹結構,其中每個地理節點都有對每個父節點的引用。頂級節點(我們的例子中的國家)沒有父級引用。而且,對於不同的國家我們有不同的結構。唯一的要求是它必須是分層的。

之後,我們通過預先計算樹遍歷信息來加速地理查詢。我們遍歷樹,計算遍歷順序並將其存儲在地理節點中。在那之後,查詢中的簡單的int比較足以檢查一個地理位置是否在另一個地理位置之內等等。

與此同時,像郵政編碼信息這樣的東西看起來就像這裏的並行數據結構一樣,存儲在不同的表中,並且引用地理結構中的地理節點。

相關問題