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程度の誤差のようです。
実用には十分ですね。
作者のみなさまに感謝!