2つのGPS座標間の距離を計算する 質問する

2つのGPS座標間の距離を計算する 質問する

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

おすすめ記事