我从http://www.ordnancesurvey.co.uk/oswebsite/opendata/index.html下载了英国邮政编码列表并将其安装在 MSSQL 2005 数据库中。该表由邮政编码、纬度和经度组成。我需要一种有效的方法来获取最接近给定纬度/经度的邮政编码。计算两点之间的距离并选择最小的距离意味着循环遍历每个查询的所有数据。大约有 170 万个条目。谢谢。
问问题
1657 次
1 回答
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。可能他们已经解决了您可能遇到的一些问题...... ;)
于 2010-08-14T06:59:44.943 回答