2つの緯度/経度のポイント間の距離を計算しようとしています。私はこの投稿から引っ張ったコードのほとんどが機能しますが、それがどのように機能するのか本当にわかりません。
これがコードです:
<?php
// POINT 1
$thisLat = deg2rad(44.638);
$thisLong = deg2rad(-63.587);
// POINT 2
$otherLat = deg2rad(44.644);
$otherLong = deg2rad(-63.911);
$MeanRadius = 6378 - 21 * sin($lat1);
$xa = (Cos($thisLat)) * (Cos($thisLong));
$ya = (Cos($thisLat)) * (Sin($thisLong));
$za = (Sin($thisLat));
$xb = (Cos($otherLat)) * (Cos($otherLong));
$yb = (Cos($otherLat)) * (Sin($otherLong));
$zb = (Sin($otherLat));
$distance = $MeanRadius * Acos($xa * $xb + $ya * $yb + $za * $zb);
echo $distance;
?>
いくつか質問があります。
- xa、ya、zaとは何ですか?それらは3Dデカルト平面上の点であることを理解していますが、それらはどこに相対的ですか?地球の中心?
cos($xa * $xb + $ya * $yb + $za * $zb)
ポイント間の距離はどのように計算されますか?私は2Dでこれを行うことを知っています:
Pythagorean Theorem
distance^2 = b^2 + a^2
distance = sqr((y2-y1)^2 + (x2 - x1)^2)
- これはどの程度正確ですか?それについては別のページで議論がありました。ただし、距離を使用して、ユーザーが10m、20m、50mなどの範囲内にいるかどうかを確認したいと思います。これを正確に行うことはできますか?
- 何に使うべき
$MeanRadius
ですか?それは妥当な値ですか?その値は地球が楕円であることを前提としていると思います。