三平方の定理を利用して 2 点間の座標から距離を求める方法


[初回公開] 2008年05月09日

Google Map や Mapbox などインターネット上の地図サービスで 2 点間の直線距離を求めたい場合は、緯度経度の座標情報があれば三平方の定理を利用して求めることができ、プログラム言語の PHP と Excel で 2 点間の距離を算出する方法を紹介する。

三平方の定理を利用して 2 点間の座標から距離を求める方法

1.2 点間の座標から距離を求める利用シーン

2 点間の座標から距離を求める利用シーンとしては、インターネットで公開されている Google Map など地図サービスで 2 点間の直線距離を求めたいときが挙げられる。



紙媒体の地図で 2 点間の直接距離を求める場合は地図の縮尺を考慮する必要があるが、インターネット上の地図の場合は座標があれば計算で算出することができる。

また、データベースの PostgreSQL などでは位置情報型(geography や geometry)を利用することで「ある地点から半径○ Km 以内にある店舗を検索」を行うことができ、その際の 2 点間の最短と最長を求める場合に利用する。

尚、2 点間の距離を求める場合は、中学生の数学で習う「三平方の定理」を活用する。

2.三平方の定理とは

三平方の定理(さんへいほうのていり)とは直角三角形の 3 辺の長さの関係を表すものである。
別名ではピタゴラスの定理とも呼ばれている。

三平方の定理を利用して 2 点間の座標から距離を求める方法

例えば上図のように A 点と B 点の距離 L を求める場合、直角三角形と見立てた場合に X 軸の I と Y 軸の J の値を利用して三平方の定理に当てはめると図中のような式となる。

3.三平方の定理を利用して 2 点間の座標から距離を求める方法

三平方の定理を利用して 2 点間の座標から距離を求める方法は、前述の図のように A 点と B 点の緯度経度の差分が縦横の距離となる。
また、三平方の定理で 2 点間の距離が算出できた場合、出てきた数値を 100 倍すると km になる。

0.009 ~ 0.01 ≒ 1.0Km



3-1.2 点の座標を用意する

2 点間の距離を求めるために、まず 2 点それぞれの座標を取得する。
インターネット上の地図サービスを利用すると特定地点の座標を取得することができ、今回は「大阪駅」と「なんば駅」の座標が下記となる。

大阪駅 :(34.70185946446266, 135.49503922462463)
なんば駅:(34.66356103107111, 135.5018788576126)

「大阪駅」と「なんば駅」の座標を取得する様子

3-2.PHP で 2 点の座標から距離を求める方法

PHP で 2 点の座標から距離を求める方法は、下記の計算式を利用する。
$l が求めたい距離となり、$m、$x、$n、$y は前述の図の A 点と B 点の座標の値とする。

$l = sqrt( pow( abs( $m – $x ), 2 ) + pow( abs( $n – $y ), 2 ) );

また、PHP の sqrt() 関数は平方根を返す。
pow() は指数に指定する乗で計算する。
abs() は絶対値を返すもので、もし緯度と経度の差分を出す際にマイナス値になっても計算に影響が出ないようにしている。

今回の例で利用した「大阪駅」と「なんば駅」の座標で計算すると $l = 0.038904 となる。
この値を 100 倍すると約 3.8km となり、2 点間の距離を求めることができる。



3-3.Excel で 2 点の座標から距離を求める方法

Excel で 2 点の座標から距離を求める方法は、下記の計算式をセルに入力して利用する。
計算式を入力したセルに 2 点間の距離が表示される。

= ( ( ( SUM( A1 ) – B1 ) ^ 2 ) + ( ( SUM( A2 ) – B2 ) ^ 2 ) ) ^ ( 1 / 2 )

Excel で 2 点間の距離を求めた様子

上図は実際に 2 点間の距離を Excel で計算した様子である。
セル B5 に上記の計算式を入れた結果が 0.038904377 となる。
この値を 100 倍すると約 3.8km となり、2 点間の距離を求めることができる。

関連記事

コメントを残す