计算范围内的邮政编码

Posted

技术标签:

【中文标题】计算范围内的邮政编码【英文标题】:Calculate zipcodes in range 【发布时间】:2011-07-30 18:09:51 【问题描述】:

我有一个网站,用户首先输入他们的邮政编码。

我有一张包含不同商店的表格,其中还包含属于商店的邮政编码。

是否可以在用户输入的邮政编码半径 5 公里范围内获取邮政编码?

这样我可以查询数据库并找到用户附近的所有商店。

我可以使用谷歌地图吗?我是否应该获得所有邮政编码(单个国家)及其坐标的预先计算的列表?还有其他建议吗?

【问题讨论】:

【参考方案1】:

您可以存储每个邮政编码的经度/纬度。该数据可在网上免费获得,这里是http://www.boutell.com/zipcodes/。然后,您将使用此处讨论的大圆距离函数找到半径中的邮政编码mysql Great Circle Distance (Haversine formula)

【讨论】:

上次我检查世界地图上还有其他几个国家... 是的,但只有一个国家/地区使用邮政编码。如果您正在寻找半径 X 英里内的商店,那么您可能对跨越任何边界都不感兴趣。 :)【参考方案2】:

Google 对此有一个tutorial,应该会为您指明正确的方向。 SQL 查询中的三角函数是唯一困难的部分。乍一看,基本上有两种方法:

    获取每个商店的纬度/经度坐标。您可以通过提供商店的街道地址,使用 Google 地图的Geocoding API 执行此操作。您只需为每个位置执行一次。 只有每个商店的邮政编码,并使用一个邮政编码表,每个商店都有以几何为中心的纬度/经度坐标。找到范围内的邮政编码,然后显示具有这些邮政编码的商店。

第一个会更准确,但两者都有效。如果您计算的是与邮政编码而不是地址的距离,您仍然需要查找该邮政编码的纬度/经度坐标。

【讨论】:

【参考方案3】:

您将需要每个邮政编码的纬度和经度,然后使用Haversine Formula 获取大致距离。

【讨论】:

【参考方案4】:

您需要从邮政编码中获取纬度/经度,然后您可以通过地图或 geoplaces api 找到附近的地方。前往 google maps api 或 YQL geo api。

【讨论】:

以上是关于计算范围内的邮政编码的主要内容,如果未能解决你的问题,请参考以下文章

计算皮尔逊相关性

iOS - 获取当前邮政编码 X 英里内的位置?

计算所有邮政编码都在 x 英里内的最小邮政编码集的函数

从另一个邮政编码获取n英里半径内的所有邮政编码[关闭]

确定邮政编码邻近/范围的 MySQL 函数

如何返回邮政编码列表的## 英里半径内的所有实例