ruby-on-rails - 美国邮政编码之间的距离计算
问题描述
我将邮政编码、城市和州存储为每个用户的变量。我需要计算并显示数据库中所有用户与当前用户之间的距离(以英里为单位)。
我遇到了 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。
解决方案
Geocoder gem 也是一个不错的选择。
但是,正如其他海报所指出的那样,在某些时候您需要将您的位置数据转换为纬度/经度。您可以从 SoftwareTools 找到诸如此类的数据库,该数据库可以将邮政编码转换为纬度/经度,但精度并不高。邮政编码有点欺骗性;它们的大小差异很大,并且它们的边界以某种频率变化。
例如,邮政编码 89049 覆盖面积为 10,000 平方英里,因此您的距离计算可能会相差一百多英里,具体取决于用户所在的邮政编码中的位置。
您最好使用地理定位工具将每个用户的街道地址转换为纬度/经度,并将其用于距离计算。Haversine gem可以提供帮助,或者如果您使用 PostgreSQL,则可以使用earthdistance 模块。
(除了作为一个满意的客户之外,我与 SoftwareTools 没有任何关系。)
推荐阅读
- c# - C# 异步编程
- queue - Opencl - 具有 2 个设备的单队列
- c++ - 用户定义文字的别名,即'使用 NS::operator ""_suffix' 和另一个名称
- reactjs - 构建 create-react-app --typescript api 调用返回 您需要启用 JavaScript 才能运行此应用程序。在部署?
- javascript - 将 Gmail 附件保存到 Google 云端硬盘
- javascript - 如何使用 vue.js 显示来自 Cloud Firestore 的单行数据
- sql - SQL Server DNS 别名
- python - 如何将系列的值(类型为字符串)更改为 int?
- php - 一维数值数组在 PHP 中转换为对象数组。如何通过索引访问对象数组的值
- c# - 有没有办法监视一个方法是否使用 Moq.NET 捕获了异常?