Name

ST_Azimuth — 北を基準とした2点間の線の方位角を返します。

Synopsis

float ST_Azimuth(geometry origin, geometry target);

float ST_Azimuth(geography origin, geography target);

説明

原点から目標点に向いたラジアン単位の方位を返しますが、2点が一致する場合にはNULLを返します。方位角は、Y軸 (ジオメトリ)または子午線北向き (ジオグラフィ)から時計回りに増えていきます。すなわち、北は0、北東はπ/4、東はπ/2、南東は3π/4、南はπ、南西は5π/4、西は3π/2、北西は7π/4、となります。

ジオグラフィでは、方位角計算問題はinverse geodesic problemとして知られます。

方位角は参照ベクトルと一つのポイントとの間の角度と定義される数学的概念で、角度の単位はラジアンです。ラジアン単位の結果はPostgreSQL関数degrees()で度に変換できます。

方位角は、垂直軸に沿ってシフトさせるにはST_Translateと併用します。実装についてはPostGIS wiki内の関数upgis_lineshift()をご覧下さい。

Availability: 1.1.0

Enhanced: 2.0.0 ジオグラフィ対応が導入されました。

Enhanced: 2.2.0 - 精度とロバスト性の向上のためにGeographicLibを使って回転楕円体面上での計測を行うようにしています。この新機能を使うには、Proj 4.9.0以上が必要です。

度単位のジオメトリの方位

SELECT degrees(ST_Azimuth( ST_Point(25, 45),  ST_Point(75, 100))) AS degA_B,
       degrees(ST_Azimuth( ST_Point(75, 100), ST_Point(25, 45) )) AS degB_A;

      dega_b       |     degb_a
------------------+------------------
 42.2736890060937 | 222.273689006094

青: 原点 (25,45)、緑: 目標点 (75,100)、黄: Y軸または北、赤: 方位角

青: 原点 (75,100)、緑: 目標点 (25,45)、黄: Y軸または北、赤: 方位角

関連情報

ST_Angle, ST_Point, ST_Translate, ST_Project, PostgreSQL Math Functions