バージョン7.0現在で,測地学機能はWolfram言語に組み込まれている.

測地学パッケージ

測地学とは,地球上の大きな範囲での位置と面積,地球の形と大きさ,地球の重力場と磁場の変化を求める等のトピックを扱う科学の一分野である.このパッケージの主要な関数は2点間の距離を求めるために用いるものである.

SphericalDistance[pos1,pos2]2つの 間の距離を球体モデルを用いて計算する
SpheroidalDistance[pos1,pos2]2つの 間の距離を回転楕円体モデルを用いて計算する

球上の2点間の距離

各位置は緯度と経度の組(単位は度)で与えられる.座標はという形式でも表すことができる.座標の値が負であるときは,南緯または西経を表す.デフォルトでは距離はキロメートルで返される.

パッケージをロードする.
In[1]:=
Click for copyable input
球体モデルにおいて,緯度度,経度度の点と,北緯度,東経度の点の距離を求める.
In[2]:=
Click for copyable input
Out[2]=
回転楕円体モデルを用いて同じ2点間の距離を求める.
In[3]:=
Click for copyable input
Out[3]=
2つのモデル間の距離の差を求める.
In[4]:=
Click for copyable input
Out[4]=

球体モデルは厳密な公式に基づいている.一方,回転楕円体モデルは10,000キロメートル以下の距離では非常によい近似が行えるアルゴリズムである.この近似の性質により,SpheroidalDistanceの計算はすべて機械精度の数で行われる.

Radius->radius球体モデルにおける球の半径を指定する
SemimajorAxis->length回転楕円体モデルにおける長半径の長さを指定する
Eccentricity->value回転楕円体モデルにおける離心率の値を指定する

モデルの形の大きさを制御するオプション

球体の半径,または回転楕円体の長半径と離心率の値を,それぞれSemimajorAxisEccentricityを使って変更すると,2点間の距離を変えることができる.これらのオプションのデフォルトの値は世界測地系(WGS84)標準のもので,キロメートルで表される.

ToAuthalicRadius[semimajor,eccentricity]authalic球体の半径を,与えられた回転楕円体の長半径と離心率で計算する
GeodeticToAuthalic[{lat,long},eccentricity]指定の離心率を持つ回転楕円体上の点の緯度と経度について,authalic球体の対応する点の座標を計算する
ToDegrees[{deg,min,sec}]「度秒」形式の座標を度に変換する
ToDMS[deg]度で表された座標を「度秒」形式に変換する

モデル間,座標系間の変換

回転楕円体から球体への変換には,authalic球体を用いるのが最も簡単である.この球体は基準となる回転楕円体と同じ表面積を持つ.

2つの形を比較する.分かりやすくするために,ここでの楕円の離心率は地球のものよりかなり大きくなっている.
In[5]:=
Click for copyable input
Out[5]=

上図で使われた離心率は.6である.地球の回転楕円体の実際の離心率は約.081である.