首页 > 后端开发 > php教程 > 如何仅使用 MySQL 计算大圆距离?

如何仅使用 MySQL 计算大圆距离?

Susan Sarandon
发布: 2024-12-26 14:18:11
原创
559 人浏览过

How Can I Calculate Great Circle Distance Using Only MySQL?

MySQL 大圆距离(半正矢公式)

本文解决了仅使用 MySQL 计算两个地理坐标之间的大圆距离的挑战。传统的PHP实现,涉及多个SQL查询和复杂的计算,可能很麻烦。

解决方案

为了将PHP代码转换为纯MySQL,我们利用Haversine公式,计算球体上两点之间距离的数学方程。 MySQL ACOS() 和 RADIANS() 函数支持此公式。

以下是相应的 MySQL 查询:

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
登录后复制

说明

  • 查询选择 id 并计算出与标记的距离
  • ACOS() 函数计算两点之间的角度,然后乘以 3959(地球半径以英里为单位或 6371 为公里)。
  • RADIANS()函数将坐标转换为弧度。
  • HAVING 子句过滤掉距离小于 25 英里的结果(或公里)。
  • ORDER BY 子句按距离升序对结果进行排序。
  • LIMIT 子句将结果数量限制为 20。

通过使用这种基于 MySQL 的方法,您可以有效地计算坐标之间的大圆距离,而无需外部 PHP 计算或额外的 SQL 查询。

以上是如何仅使用 MySQL 计算大圆距离?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板