php - 实现大圆算法

标签 php algorithm formula pow great-circle

下面是我想翻译成 PHP 的公式(大圆算法)。如果有人愿意帮助我,我将不胜感激?

输入是不同的坐标集,例如:

Place 1 Lat: 59.389057
Place 1 Long: 17.937422

Place 2 Lat: 59.388914
Place 2 Long: 17.920441

想要的输出是地点 1 和地点 2 之间的距离。

distance = ((115.1666667 * (lat2-lat1)) ^ 2 + (115.1666667 * (lng2 - lng1) * cos(lat2 / 57.3)) ^ 2) ^ .5

我的尝试:

$distance = pow(((115.1666667 * ($lat2 - $lat1)), 2) + (115.1666667 * pow(($lng2 - $lng1) * cos($lat2 / 57.3)), 2)), 0.5)

最佳答案

正如 DCoder 在评论中所写,临时变量使内容更易于阅读:

$latD = (691 / 6) * ($lat2 - $lat1);
$lngD = (691 / 6) * ($lng2 - $lng1) * cos($lat2 / 57.3);

$distance = sqrt( $latD * $latD + $lngD * $lngD );

( demo on codepad.org )

关于php - 实现大圆算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091929/

相关文章:

php - 这是一次将多个文本字段添加到 mysql 中的正确方法吗?

javascript - Json 编码 php mysql 查询

vba - 结合 VBA 和公式来检查独特的输出

php - array_diff 和重新编号数字键

php - 如何用C++开发PHP的pear

.net - 任何用于医疗诊断和数据挖掘的 .NET 开源项目

hibernate - 使用 @Formula 的 Hibernate 实体的 native SQL 查询导致 NullPointerException

crystal-reports - 具有多个 OR 运算符的 Crystal 报告抑制公式不起作用

algorithm - 复杂输送机运力计算(图)——趣味游戏算法

algorithm - 查找/计算方法的复杂性