首页 > 解决方案 > 美国邮政编码之间的距离计算

问题描述

我将邮政编码、城市和州存储为每个用户的变量。我需要计算并显示数据库中所有用户与当前用户之间的距离(以英里为单位)。

我遇到了 Geo-magic 和 Geo-distance ruby​​ gems,但它们使用 lat 和 lon 进行计算。

想要达到这样的目标
https://www.freemaptools.com/distance-between-usa-zip-codes.htm https://www.mapdevelopers.com/distance_from_to.php

希望以最有效的方式在rails中实现这一点。TIA。

标签: ruby-on-railsrubygemsdistance

解决方案


Geocoder gem 也是一个不错的选择。

但是,正如其他海报所指出的那样,在某些时候您需要将您的位置数据转换为纬度/经度。您可以从 SoftwareTools 找到诸如此类的数据库,该数据库可以将邮政编码转换为纬度/经度,但精度并不高。邮政编码有点欺骗性;它们的大小差异很大,并且它们的边界以某种频率变化。

例如,邮政编码 89049 覆盖面积为 10,000 平方英里,因此您的距离计算可能会相差一百多英里,具体取决于用户所在的邮政编码中的位置。

您最好使用地理定位工具将每个用户的街道地址转换为纬度/经度,并将其用于距离计算。Haversine gem可以提供帮助,或者如果您使用 PostgreSQL,则可以使用earthdistance 模块

(除了作为一个满意的客户之外,我与 SoftwareTools 没有任何关系。)


推荐阅读