LoginSignup
17
14

More than 5 years have passed since last update.

2地点の距離の導出

Last updated at Posted at 2018-07-05

地球上の2地点の距離の求め方

地球上の2地点の距離の求め方は、いくつかありますが、以下の2つの方法を解説します。

  • 球面三角法の余弦定理からの導出
  • ベクトル空間からの導出

それぞれの公式において、緯度・経度を使って距離を導出することができます。

球面三角法の余弦定理からの導出

球面三角形と球面三角法の余弦定理について

球面三角形とは、以下の図のように、球面上の3点を結んだ三角形の事です。


図: 単位球面上の球面三角形

上図の球面三角形の辺と角度には以下の関係式が成り立ちます。
これを球面三角法の余弦定理と呼びます。

球面三角法の余弦定理(式1)
cos(c) = cos(a)cos(b) + sin(a)sin(b)cos(C)

上式から単位球面上2点間の距離cは、以下となります。

2点間の距離c (式2)
c = acos({cos(a)cos(b) + sin(a)sin(b)cos(C)})

単位球を地球にマッピング

また以下の図2のように、
点uを北極点、点v,wをそれぞれ距離を求める2地点として、単位球を地球にマッピングします。

図1 図2
単位球上の球面三角形 点uを北極点として、左図を地球にマッピングした図。

点vの緯度・経度 = (φ1, λ1)
点wの緯度・経度 = (φ2, λ2)

そうすることによって、図1の単位球面上の球面三角形の辺と角度は、緯度・経度を使って以下のように表せます。

図1の関係式を緯度・経度で表した場合
a = π/2 - φ1 (φ1: 点vの緯度[rad])
b = π/2 - φ2 (φ2: 点wの緯度[rad])
C = λ2 - λ1 = Δλ (λ1: 点vの経度[rad], λ2: 点wの経度[rad])

* 単位球では、球の中心oとのなす角度[rad]はそのまま、円弧の長さとなる事に注意
→ ex 辺bは、∠uowのなす角度[rad]と同一

従って式2から、単位球面における2地点の距離(c)は、
以下のように緯度・経度を使って表す事が出来ます。

経度・緯度からの単位球面上の2地点の距離c(式3)
c = acos(cos(a)cos(b) + sin(a)sin(b)cos(C))
  = acos(cos(π/2-φ1)cos(π/2-φ2) + sin(π/2-φ1)sin(π/2-φ2)cos(Δλ))
  = acos(sin(φ1)sin(φ2) + cos(φ1)cos(φ2)cos(Δλ))

求めた距離cは、直径1の単位球上の2点間の距離なので、
地球上における2地点の距離(d)は、地球の直径をRとすると以下となります。

地球上における2点間の距離
d = Rc

ベクトル空間から地球上の2点間の距離を求める

緯度・経度を直接ベクトル空間にマッピングするのは、しんどいため、
一旦緯度・経度を極座標で表し、極座標からベクトル空間(直交座標)に変換します。

ベクトル空間による距離の導出

上図において、点Pと点Qをそれぞれ距離を求めたい2地点とすると、
その間のなす角度cを求めることで、弧PQの長さが導出できます。
この角度cは、ベクトルの公式(内積・外積)どちらからでも求めることが出来ます。
(またこの角度cは、式1、式2に出てくるcと同一であるため、球面三角形の余弦定理の証明にもなります。)

経度・緯度と極座標の関係

上図の極座標において、緯度・経度を以下のようにマッピングします。

経度・緯度と極座標の関係(定義1)
φ = 経度
θ = π/2 - 緯度
r = 地球の半径

極座標からベクトル空間へ

wikipediaの極座標から拝借。

image.png

従ってある地球上の2地点の経度・緯度がそれぞれP(φ1, λ1)、Q(φ2, λ2)とすると、定義1からそれぞれベクトル空間上で緯度・経度を用いて表すと、以下となります。

経度・緯度をベクトル空間上に変換
点P = ( sin (π/2-φ1)cos(λ1), sin(π/2-φ1)sin(λ1), cos(π/2-φ1) )
    = ( cos(φ1)cos(λ1), cos(φ1)sin(λ1), sin(φ1) )
点Q = ( cos(φ2)cos(λ2), cos(φ2)sin(λ2), sin(φ2) )

内積から2頂点のなす角度cを導出

p・q
p・q = cos(φ1)cos(φ2)cos(λ1)cos(λ2) + cos(φ2)cos(φ2)sin(λ2)sin(λ2) + sin(φ1)sin(φ2)
     = cos(φ1)cos(φ2){cos(λ1)cos(λ2) + sin(λ1)sin(λ2)} + sin(φ1)sin(φ2)
     = cos(φ1)cos(φ2)cos(Δλ) + sin(φ1)sin(φ2)

それぞれp,qが単位ベクトルとすると、
ベクトルp,qと間のなす角度cとの関係 p・q = cos(c) であるから、角度cは以下となります。

2つのp,qベクトルのなす角度c(式4)
c = acos(p・q)
  = acos(cos(φ1)cos(φ2)cos(Δλ) + sin(φ1)sin(φ2))

従って点Pと点Qの間のなす角度cが求まったので、
地球の直径をRとした時の2地点の距離(d)は以下となります。

地球上の2地点の距離
d = Rc

図らずしも式4は、球面三角法の余弦定理から求めた式3のcと同一になっていることがわかります。
これは単位球面上の球面三角形の辺と角度は、以下の関係があるためです。

上図に置いて中心点をOとすると、OBとOCのなす角度∠BOC ([rad])を上記のベクトルを使って導出しました。
一方球面三角法の余弦定理で求めた値は、弧BCになります。
長さ1の単位球面上においては、角度をradで表現した場合、円弧の長さと等しくなるため、球面三角法の余弦定理の証明に使うことが出来ます。

参考

Calculate distance, bearing and more between Latitude/Longitude points

大円距離

球面三角法

極座標系

画像参照元

wikipedia File:Spherical with grid.svg

wikipedia File:Arctic Ocean - en.png

wikipedia File:Law-of-haversines.svg

wikipedia File:Illustration of great-circle distance.svg

wikipedia File:Spherical trigonometry basic triangle.svg

17
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14