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;
说明
通过使用这种基于 MySQL 的方法,您可以有效地计算坐标之间的大圆距离,而无需外部 PHP 计算或额外的 SQL 查询。
以上是如何仅使用 MySQL 计算大圆距离?的详细内容。更多信息请关注PHP中文网其他相关文章!