[初回公開] 2008年05月09日
Google Map や Mapbox などインターネット上の地図サービスで 2 点間の直線距離を求めたい場合は、緯度経度の座標情報があれば三平方の定理を利用して求めることができ、プログラム言語の PHP と Excel で 2 点間の距離を算出する方法を紹介する。
このページの目次
1.2 点間の座標から距離を求める利用シーン
2 点間の座標から距離を求める利用シーンとしては、インターネットで公開されている Google Map など地図サービスで 2 点間の直線距離を求めたいときが挙げられる。
紙媒体の地図で 2 点間の直接距離を求める場合は地図の縮尺を考慮する必要があるが、インターネット上の地図の場合は座標があれば計算で算出することができる。
また、データベースの PostgreSQL などでは位置情報型(geography や geometry)を利用することで「ある地点から半径○ Km 以内にある店舗を検索」を行うことができ、その際の 2 点間の最短と最長を求める場合に利用する。
尚、2 点間の距離を求める場合は、中学生の数学で習う「三平方の定理」を活用する。
2.三平方の定理とは
三平方の定理(さんへいほうのていり)とは直角三角形の 3 辺の長さの関係を表すものである。
別名ではピタゴラスの定理とも呼ばれている。
例えば上図のように 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 )
上図は実際に 2 点間の距離を Excel で計算した様子である。
セル B5 に上記の計算式を入れた結果が 0.038904377 となる。
この値を 100 倍すると約 3.8km となり、2 点間の距離を求めることができる。
関連記事
SQL インジェクション攻撃を検知するツール「iLogScanner」の利用方法
インターネット上に動く Web アプリケーションやシステムがハッキングされたり情報漏洩する要因の 1 つに SQL インジェクションと呼ばれる攻撃に遭ったときがあり、その SQL インジェクション攻撃が…
CSS で float したリンクが小さくなる場合の解決方法
CSS の float を利用すると div タグなど特定の領域やリストタグ(li タグ)を縦並びから横並びにすることができるが、float で指定した a タグのリンクが範囲が小さくなりマウスやタップが反応しな…
LINE 公式アカウントを作成して友だち追加した人に一斉にプッシュ通知する方法
LINE は友だち同士で連絡や会話する以外に、公式アカウントを作成してそのアカウントに友だち追加してくれた人に案内(プッシュ通知)して販売促進につなげる活用方法があり、公式アカウントの作成…