实现大圆算法

时间:2012-12-30 15:26:49

标签: php algorithm formula pow great-circle

下面是一个我想要翻译成PHP的公式(Great Circle算法)。如果有人能帮助我,我真的很感激吗?

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

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)

2 个答案:

答案 0 :(得分:3)

当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

答案 1 :(得分:1)

以下是更正后的代码:

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