1
我已經從http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html下載英國郵政編碼列表,並將其安裝在MSSQL 2005數據庫中。該表由郵編,緯度和經度組成。我需要一個有效的方法來獲得最接近的郵政編碼給定的經緯度。計算兩點之間的距離並選擇最小值意味着循環遍歷每個查詢的所有數據。有大約170萬條目。謝謝。從經緯度獲取郵政編碼
我已經從http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html下載英國郵政編碼列表,並將其安裝在MSSQL 2005數據庫中。該表由郵編,緯度和經度組成。我需要一個有效的方法來獲得最接近的郵政編碼給定的經緯度。計算兩點之間的距離並選擇最小值意味着循環遍歷每個查詢的所有數據。有大約170萬條目。謝謝。從經緯度獲取郵政編碼
您可以通過首先使用「圓形近似」過濾查詢來加快計算速度 - 即。返回確定半徑內的所有郵編delta
。基本的查詢應該是這樣的:
SELECT postcode, x, y FROM table WHERE ((x BETWEEN x - delta AND x + delta) AND (y BETWEEN y - delta AND y + delta))
而現在剩下的量應該是更容易管理的數據位。另外,如果你正在開發一些「關鍵任務」的東西,一定要看一下PostGIS。這可能是因爲他們已經解決了您可能遇到的一些問題...;)
請爲Google搜索做近似搜索 – CarneyCode 2010-08-14 06:46:41