두 위도 / 경도 지점 사이의 거리를 계산하려고합니다. 나는 이 게시물 에서 가장 많이 사용되는 코드를 가지고 있지만 실제로 어떻게 작동하는지 이해하지 못합니다.
코드는 다음과 같습니다.
<?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
합니까? 합리적인 가치입니까? 그 가치는 지구가 타원이라고 가정합니다.