0

以下は、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)
4

2 に答える 2

3

DCoder がコメントに書いているように、一時変数を使用すると読みやすくなります。

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

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

( codepad.org のデモ)

于 2012-12-30T16:04:31.653 に答える
1

修正されたコードは次のとおりです。

$distance = pow((pow((115.1666667 * ($lat2 - $lat1)), 2) + pow((115.1666667 * ($lng2 - $lng1) * cos($lat2 / 57.3)), 2)), 0.5);
于 2012-12-30T15:30:09.797 に答える