«前の日記(2004-08-24) 最新 次の日記(2004-08-26)» 編集

N.* D.* E.* frozen beach

更新しません。

Next Diary Extended

文献関係はアマゾンアサマシエイトへのリンクになっています。あさましいのが嫌いな人はご注意ください。

割と最近のつっこみ:


2004-08-25 [長年日記]

緯度、経度から距離を計算する

ってどうやるんだろう、というのを半日調べたり作ったりしていた。

ヒュベニの式というものがあるらしい。

http://www.kashmir3d.com/kash/manual/std_siki.htm

perl で書いてみた。角度はラジアン。

sub distance {
#2地点間の距離を計算する
    my ($lat1, $lon1, $lat2, $lon2) = @_;
    my ($m, $n, $d, $dp, $dr, $p);

    $dp = abs($lat1 - $lat2);
    $dr = abs($lon1 - $lon2);
    $p = $lat1 + (($lat2 - $lat1) / 2);
# ベッセル楕円体 (旧測地系)
#    $m = 6334834 / sqrt((1 - 0.006674 * (sin($p) ** 2))**3);
#    $n = 6377397 / sqrt(1 - 0.006674 * (sin($p) ** 2));
# GRS80楕円体 (2000年系)
    $m = 6335439 / sqrt((1 - 0.006694 * (sin($p) ** 2))**3);
    $n = 6378137 / sqrt(1 - 0.006694 * (sin($p) ** 2));
    $d = sqrt((($m * $dp) ** 2) + (($n * cos($p) * $dr) ** 2));
    return $d;
}
$d = &distance($lat1, $lon1, $lat2, $lon2);
print "$d\n";

上で3乗すべきところを3倍して値が合わずに1時間ぐらい悩んだ。

「そこは本題じゃないんだから先に進みましょうよ」とはっとりんに呆れられる。そんな日。

本日のツッコミ(全2件) [ツッコミを入れる]
paina (2004-08-26 04:46)

ちょっと前に、DoCoMoの位置情報サービスで得られるGRSの測地系を、<br>旧測地系に直してゼンリンのページに投げるという必要にせまられたとき、<br>Location::GeoToolというモジュールを見つけました。<br>http://kokogiko.net/wikiLocation::GeoTool.html<br>こいつを使うと、測地系変換や距離を求めたりが簡単にできていい感じです。<br><br><br><br>自分で調べて作るのが重要という説もありますが。

とおやま (2004-08-26 12:00)

おー<br>便利<br>逆のスクリプトを書いていた


過去テーブル

一部解放中

tdiary以前

tdiary以後

2003|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|