iRSSの日記

はてなダイアリーiRSSの日記の続き

Perlモジュール Location-GeoToolの測地系変換の精度

Location-GeoToolで、測地系の変換をしていますが、誤差についての質問を受けたので、調べてみた。
http://search.cpan.org/dist/Location-GeoTool/

測地系変換の導出アルゴリズムは、 http://homepage3.nifty.com/Nowral/02_DATUM/Molodensky.htmlにおいて、 Nowral氏がPerl CGIで実装されているものを移植しました。

ということで変換ロジックはMolodensky法らしい。

でそのMolodensky法というと、

Molodensky法(やや難):

上記の測地系パラメタを用いる方法の簡便法です。直交座標を経由しないで、一発でずれを求めます。式中にarctanが出てこないので、sin、cosしかない処理系でも大丈夫です。

上記の方法と結果を比べも、差は1000分の1秒程度ですので、GPSには十分すぎる程です。

(1999/11/24)

差は1000分の1秒程度の模様

地球は完全な球体ではなく赤道付近が膨らんだ楕円体ですから、正確な値を求めたい場合は、扁平率を考慮した複雑な計算が必要になります。

それが面倒なむきには、国土地理院のサイトの「便利なプログラム・データ」で、各種の測量計算プログラムが利用できます。
下記のページで適当な2地点の緯度・経度を指定して試してみてください。計算式も掲載されています。

「距離と方位角の計算」… 緯度、経度から2点間の距離と方位角を求める
→ ?http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2stf.html?

同一経線上の緯度方向の測地線長は、緯度によって微妙に違います。
 北緯90度 0分0秒〜南緯90度 0分0秒 : 20,003,931.458(m)
 北緯 0度 0分0秒〜北緯90度 0分0秒 : 10,001,965.729(m)
 北緯 0度 0分0秒〜北緯 0度 0分1秒 : 30.715(m)
 北緯35度40分0秒〜北緯35度40分1秒 : 30.820(m)
 北緯90度 0分0秒〜北緯90度 0分1秒 : 31.026(m)

ということで、東京付近なら1000分の1秒は3cm程度の誤差のようです。


実用には十分ですね。



作者のみなさまに感謝!