0

这是我对所有人的问题

我已经有一个执行“邮政编码附近”搜索的现有系统。

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

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

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

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

4

2 回答 2

0

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

于 2012-08-21T18:58:58.857 回答
0

我通常做的是将我的搜索括起来加上和减去一个度数。如前所述,纬度约为 69 英里。有了经度,事情变得有点复杂。离北极越近,从一个经度到另一个经度的距离就越短。例如,在佛罗里达州/乔治亚州边界,经度一度相距约 55 英里,但在加利福尼亚/俄勒冈州边界处,仅相距约 50 英里。

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

于 2012-09-27T22:09:16.027 回答