2010-08-14 204 views
1

我已经从http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html下载英国邮政编码列表,并将其安装在MSSQL 2005数据库中。该表由邮编,纬度和经度组成。我需要一个有效的方法来获得最接近的邮政编码给定的经纬度。计算两点之间的距离并选择最小值意味着循环遍历每个查询的所有数据。有大约170万条目。谢谢。从经纬度获取邮政编码

+2

请为Google搜索做近似搜索 – CarneyCode 2010-08-14 06:46:41

回答

2

您可以通过首先使用“圆形近似”过滤查询来加快计算速度 - 即。返回确定半径内的所有邮编delta。基本的查询应该是这样的:

SELECT postcode, x, y FROM table WHERE ((x BETWEEN x - delta AND x + delta) AND (y BETWEEN y - delta AND y + delta)) 

而现在剩下的量应该是更容易管理的数据位。另外,如果你正在开发一些“关键任务”的东西,一定要看一下PostGIS。这可能是因为他们已经解决了您可能遇到的一些问题...;)

相关问题