« 経度/緯度の表記 | メイン | RSS配信 »

2007年02月01日

経度・緯度から直線距離を求める方法

携帯のGPS機能などで現在の位置が経度・緯度で分かったあと、そこから近い山を探すためには2地点の座標から直線距離を求める必要があります。

正式な計算方法は国土地理院の↓のページにあるようです。
「2点の平面直角座標x,yから測地線長および方向角を求める計算」
http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/

が、残念ながら理解できなかった&そこまで正確な値が欲しい訳ではないので、ものぐさ心でネットを探したら公開されているコードがありました。
「経度・緯度による距離計算」
http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm

Javascriptだと携帯では使えないので、perlに書き直しました。
【地点1】北緯: $na, 東経: $ta
【地点2】北緯: $nb, 東経: $tb
のときの場合です。あらかじめdd.dddddd(度のみの表記)に変換したものを使います。

$na=3.1415926535*$na/180;
$ta=3.1415926535*$ta/180;
$na=$na-((11.55/60)*3.1415926535/180)*sin(2*$na);
$nb=3.1415926535*$nb/180;
$tb=3.1415926535*$tb/180;
$nb=$nb-((11.55/60)*3.1415926535/180)*sin(2*$nb);
$c=cos($na)*cos($nb)*cos($ta-$tb)+sin($na)*sin($nb);
$s=sqrt(1-$c**2);
$d=atan2($s, $c)*6369;

とすると、$dにkm表示で2地点間の直線距離が入ります。
でも内容を理解できていないので、記号の羅列にしか見えなかったり・・・

まぁぼちぼちやっていきます。


人気blogランキング
投稿者 matoyan : 2007年02月01日 00:09

コメント

コメントしてください




保存しますか?