2011-06-14 101 views
2

我正在考慮使用谷歌或雅虎api來計算從一個郵政編碼到另一個郵政編碼的距離,並獲得該郵政編碼的城市。但是,api調用是有限的,因爲我正在處理的網站會在多個頁面中多次查詢api。PHP中的郵政編碼定位器

我想知道我可以去哪裏找一個帶有郵政編碼和城市的數據庫,或者是一個郵政編碼數據庫來查詢經緯度。

我做了一些Google搜索,並且我下載的大部分免費內容都不準確,或者大到適合數據庫。

感謝

我將使用PHP

+0

另外,如果您發現它們有用(請參閱此處有一個打勾)並且還使用upvotes,則應接受您的問題的答案。它會幫助你獲得更多答案。 – Rishabh 2011-06-14 11:32:35

+0

Google地理編碼服務的限制爲每天每IP255個請求(http://code.google.com/apis/maps/documentation/geocoding/#Limits)。你預計需要更多嗎? – 2011-06-15 01:37:50

回答

2

在我使用this PHP class過去。雖然我還沒有廣泛使用它,但它在Zip Code查找和距離方面做了我所需要的工作。

1

商業郵政編碼數據庫與緯度/龍都可用。它們並不昂貴,也不大(如果你限制在美國,那麼大約有40K條小記錄)。在過去,我一直對zip-finder.com有好運,但重要的警告......一旦你開始維護你自己的郵政編碼表,你將需要保持它與任何USPS用zip代碼時間。一件令人惱火的事情是刪除郵編。這就是說,計算距離非常微不足道,但每個郵政編碼只能獲得一個經緯度點(或多或少是區域的質心)。對於大型郵政編碼,您的距離精度可能會有一英里或更多的斜坡,因此請注意這一點。

0

結賬PHP-ZipCode-Class。您可以將其適應任何數量的郵政編碼數據庫。就個人而言,我會去商業數據庫,因爲免費的數據庫很容易就會過時。相信我。我試圖在高流量的電子商務網站上維護一個免費的數據庫多年。如果只是購買一個商業數據庫本來是一個很好的選擇。如果你真的堅持一個免費的數據庫,這裏有一些我知道的(但還沒有嘗試過)。

0

你有關API的限制是正確的。 Bing也是如此(雖然他們的API很不錯)。

如果使用數據庫... 儘管需要一點工作,您可以從美國人口普查老虎數據中免費獲得 - 這是最低端的第三方郵政編碼數據庫所基於的。只知道在2000年,他們用ZCTA(這是郵政編碼,但不是確切的)替換了郵政編碼。我在下面的鏈接中包含了人口普查網站上對ZCTA的解釋:http://www.census.gov/geo/ZCTA/zcta.html

其他要考慮的事項:大多數緯度和經度質心都基於幾何計算 - 意味着它們可能會落在林地的中間,大湖泊,無人居住的公園(如中央公園)。我不確定你的需求是什麼,但這可能適合你。如果您需要以人口爲基礎的中心,則可能需要商業數據(請參閱http://greatdata.com/zip-codes-lat-long點擊頂部的'更多詳細信息'標籤以獲得對此主題的解釋)。

此外,確定如果你只需要在主要城市的每個郵政編碼(一比一的關係 - 通常40000條記錄),或者如果一個郵政編碼邊界覆蓋超過一個城市,你需要列爲每個城市單獨記錄(約57,000記錄)。大多數定位器和地址驗證實用程序都需要後者。

1

這是最好的免費的郵編數據庫,你會發現:http://federalgovernmentzipcodes.us/

,如果您不需要緯度,經度超級準確工作正常。不幸的是,lat,lng並不是那麼準確,並不是因爲小數點後兩位 - 而是因爲它們有點兒偏離。

我返工這個數據庫,以使緯度,經度更準確擊中谷歌地圖

maps.googleapis.com/maps/api/geocode/json?address="zip代碼城市狀態「;

0

我一直在使用http://zip-info.com/多年的郵政編碼數據庫。它每季度更新一次(非常重要),非常準確。數據庫大約是50美元,我每年購買兩次更新。

在美國有54,000個5位數字的郵政編碼 - 所以任何好的數據庫都會很大 - 如果你只是去掉不需要的數據字段(限制爲zip/lat/lon)想要減少數據存儲(雖然這是最小的節約)。正如羅布所說,距離計算很容易做到 - 只要找一個腳本,將大圓圈計算作爲一個起點。