earthdistance
は地表面上の大圏距離を計算する、2つの異なる方式を提供します。
最初に説明する方式はcube
モジュールに依存します。
(これはearthdistance
をインストールする前にインストールしなければなりません。)
2番目の方式は、座標系として緯度経度を使用した、組み込みのpoint
データ型を基にしたものです。
このモジュールでは地球は完全な球体であると仮定します。 (この精度が不十分な場合は、PostGISプロジェクトを参照することを勧めます。)
地球中心からのx、y、z距離をあらわす3次元を使用した点(両隅が同じ)であるcubeとして、データは格納されます。
cube
上にearth
ドメインが提供されます。
これには、値がこれら制限を満たすか、また値が理論的に実際の地表面に近いかどうかの整合性検査を含みます。
地球の半径はearth()
関数から入手されます。
この単位はメートルです。
しかしこの1つの関数を変更することで、何らかの他の単位を使用するようにしたり、より適切と考える別の半径を使用したりするようにこのモジュールを変更することができます。
このパッケージは天文学データベースへの応用もあります。
天文学者はおそらくearth()
が度単位の距離になるように180/pi()
を返すものと変更したいでしょう。
緯度経度(度単位)の入力をサポート、緯度経度の出力をサポート、2点間の大圏距離を計算、インデックス検索に使用可能な簡単に外接矩形を指定するための関数が提供されます。
提供されている関数は表F.6「cubeを基にしたearthdistanceの関数」に示されています。
表F.6 cubeを基にしたearthdistanceの関数
このモジュールの第2部分はpoint
型の値として地球上の位置を表現することに依存します。
ここで第1要素は経度を度単位で、第2要素は緯度を度単位で表現されていると見なします。
直感的に経度はX軸、緯度はY軸という考えがより合うため、点は(経度, 緯度)として見なされますが、逆には見なされません。
表F.7「pointを基にしたearthdistanceの演算子」に示されている1つの演算子が提供されます。
表F.7 pointを基にしたearthdistanceの演算子
演算子 | 戻り値 | 説明 |
---|---|---|
point <@> point | float8 | 法定マイル単位の地表の2点間の距離を返します。 |
このモジュールのcube
を基にした場合と異なり、ここでの単位はコード内に固定で記載されることに注意してください。
earth()
関数を変更しても、この演算子の結果には影響しません。
緯度経度表現の1つの欠点は、極近辺と経度±180度近辺の限界条件に注意する必要があることです。
cube
を基にした表現ではこうした不連続性を防止できます。