我正在嘗試查找兩個經度和緯度點之間的距離。我正在嘗試使用great circle distance。這是公式: 使用海峽網格公式的緯度/長點之間的距離
我不知道爲什麼,但我的程序無法正常工作。這是我得到的結果:
Change Angle: 0.00016244370761414
Earth Radius: 6371
RESULTS:
Correct Distance: 24.883 km
Computed Distance: 1.0349288612097
來源:
$latStart = 44.638;
$longStart = -63.587;
$latFinish = 44.644;
$longFinish = -63.597;
# Convert Input to Radians
$latStart = deg2Rad($latStart);
$longStart = deg2Rad($longStart);
$latFinish = deg2Rad($latFinish);
$longFinish = deg2Rad($longFinish);
# Because the Earth is not perfectly spherical, no single value serves as its
# natural radius. Distances from points on the surface to the center range from
# 6,353 km to 6,384 km (≈3,947–3,968 mi). Several different ways of modeling the
# Earth as a sphere each yield a convenient mean radius of 6371 km (≈3,959 mi).
# http://en.wikipedia.org/wiki/Earth_radius
$earthRadius = 6371;
# difference in Long/Lat
$latChange = $latFinish - $latStart;
$longChange = $longFinish - $longStart;
# haversine formula
# numerically stable for small distances
# http://en.wikipedia.org/wiki/Great-circle_distance
$changeAngle = 2 * asin(
sqrt(
pow(sin($latChange/2),2) +
cos($latStart) * cos($latFinish) * pow(sin($longChange/2),2)
)
);
echo "Change Angle: $changeAngle\n";
echo "Earth Radius: $earthRadius\n";
YEPP。我有錯誤的輸入。 – sixtyfootersdude 2010-11-30 19:58:32