地球上の2点の座標から直線距離を計算する

Top »

球面上の距離を求める。地球を完全な球と仮定するので正確ではない。

A地点 経度度 緯度
B地点 経度度 緯度
計算結果 距離 約km

計算式

y1 = 緯度A, y2 = 緯度B, cos x = cos(経度A-経度B)

距離 = 6369.0[km] arccos(0.5((cos x+1)cos(y1-y2)+(cos x-1)cos(y1+y2))))

経度緯度は三角関数に入れるので単位はラジアン

コード例Java

static final double DEG = Math.PI / 180.0;
static String spDist(double x, double y1, double y2) {
      double cx = Math.cos(x*DEG);
      return String.format("%.2fkm", 6369.0*Math.acos(0.5*((cx+1.0)*Math.cos((y1-y2)*DEG)+(cx-1.0)*Math.cos((y1+y2)*DEG))));
}
//新宿と名古屋の距離"258.08km"が返る
spDist(139.69-136.91,35.69,35.18)
inserted by FC2 system