php - MySQL PHP邮政编码比较具体距离

标签 php mysql zip distance

我试图找出比较一个邮政编码(用户提供的)和一大堆其他邮政编码(大约有 200 个邮政编码)之间的距离的最有效方法(相对于加载时间)现在的代码,但随着时间的推移可能会增加)。我不需要任何精确的东西,只是在球场上。

我下载了美国各地的邮政编码 csv 文件,并且我有一个函数可以生成两个邮政编码之间的距离(我相信以弧度为单位)。我不需要显示我只需要的距离对 200 个邮政编码进行排序,其中最接近的为第一个结果。

我将 csv 文件上传到 mysql 表。我想我可以循环遍历所有 200 个邮政编码,并为每个邮政编码更新一个包含距离的字段。然后使用 ORDER BY,从最近到最远对它们进行排序。

有谁知道更有效的方法吗?这种方式需要在每次运行搜索查询时更新整个邮政编码数据库。现在只有 200 个邮政编码,这不是什么大问题,但我想它会减慢数据库构建时的加载时间。在此先感谢您的任何建议,非常感谢!

最佳答案

在 JavaScript 中:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

其中 d = 两点之间的距离

这是Haversine formula .

关于php - MySQL PHP邮政编码比较具体距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349763/

相关文章:

javascript - 通过 Ajax 在 PHP 中保存来自 Javascript 的数据 URL

php - 网页有重定向循环

php - 使用ajax和json处理多个数据库行

php - 在多个表中搜索关键字

mysql - MySQL 查询中 '".$string ."' 和 '$string"之间有什么不同

python 3 - 读取压缩存档中的文件将 'b' 字符放在每行的开头

android - 如何将两个具有相同文件名的文件添加到单个 zip 存档文件中?

php - 具有多条记录的 LAST_INSERT_ID() 插入 MySQL

php - 在 Ubuntu 中为 Web 开发 (LAMP) 提供代码自动完成的 IDE 的建议

java - OutOfMemoryError 读取一个巨大的 ZipFile