2 つの GPS 座標間の距離を(緯度と経度を使用して)計算するにはどうすればよいですか?
ベストアンサー1
緯度と経度で2つの座標間の距離を計算します(Javascript 実装を含む)。
西と南の場所はマイナスです。分と秒は 60 秒単位なので、S31 30' は -31.50 度です。
度をラジアンに変換することを忘れないでください。多くの言語にこの機能があります。または、簡単な計算です: radians = degrees * PI / 180
。
function degreesToRadians(degrees) {
return degrees * Math.PI / 180;
}
function distanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
var earthRadiusKm = 6371;
var dLat = degreesToRadians(lat2-lat1);
var dLon = degreesToRadians(lon2-lon1);
lat1 = degreesToRadians(lat1);
lat2 = degreesToRadians(lat2);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return earthRadiusKm * c;
}
使用例をいくつか示します。
distanceInKmBetweenEarthCoordinates(0,0,0,0) // Distance between same
// points should be 0
0
distanceInKmBetweenEarthCoordinates(51.5, 0, 38.8, -77.1) // From London
// to Arlington
5918.185064088764