优化邮政编码距离计算



这是我对所有的问题

我已经有了一个现有的系统来搜索"附近的Zipcode"。

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

目前,我有大约4300个邮政编码记录。

我目前的算法是选择1条记录,并对43k条记录进行全表扫描。

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

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

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

您首先需要有起始位置的纬度/经度,并且可能需要设置4个变量,例如:beglat、endlat、beglong和endlong。将beglat指定为起始位置的纬度减一度,将endlat指定为起始地点的纬度加一度,等等。为了更紧凑的搜索半径,您可以选择半度或其他值。

最新更新