优化邮政编码距离计算

时间:2012-08-21 18:50:52

标签: asp.net sql-server-2008 geolocation geospatial computational-geometry

以下是我对所有人的问题

我已经有一个现有系统可以执行“Near By Zipcodes”搜索。

这篇文章的目的是看我是否可以优化这个过程。

目前,我有大约43k的邮政编码记录。

我当前算法的工作方式是选择1条记录并对43k记录进行全表扫描。

有没有办法只取一个子集(纬度范围,长距离)并以这种方式进行计算?

2 个答案:

答案 0 :(得分:0)

你可以从google或geocoder.us(或者你获得地理数据的地方)获得所有邮政编码的质心的纬度/经度。在where子句中使用它们作为缩小搜索范围的粗略指南。

答案 1 :(得分:0)

我通常做的是将我的搜索加上和减去一度。如上所述,纬度约为69英里。随着经度,事情会变得复杂一些。越靠近北极,距离从一个经度到另一个经度的距离就越短。例如,在佛罗里达州/佐治亚州边境,一度经度相距约55英里,但在加利福尼亚州/俄勒冈州边境,它只相隔约50英里。

首先需要为您的起始位置设置纬度/经度,并且可能需要设置4个变量,例如:beglat,endlat,beglong和endlong。将beglat分配给起始位置的纬度减去一度,将终点分配到起始位置的纬度加一度等。对于更紧密的搜索半径,您可以选择半度或其他。