Name

ST_Angle — 3点もしくは4点、または2線で定義される二つのベクタ間の角度を返します。

Synopsis

float ST_Angle(geometry point1, geometry point2, geometry point3, geometry point4);

float ST_Angle(geometry line1, geometry line2);

説明

二つのベクタの時計回りの角度を計算します。

形式1:P1-P2-P3がなす角度を計算します。4番目のポイントが充てられた場合には、P1-P2とP3-P4がなす角度を計算します。

形式2: 入力ラインで定義される始端と終端ベクトルS1-E1とS2-E2の間の角度を計算します。

結果は正の角度で0と2πラジアンの間です。ラジアンはPostgreSQL関数degrees()で度に変換できます。

ST_Angle(P1,P2,P3) = ST_Angle(P2,P1,P2,P3)となることに注意して下さい。

Availability: 2.5.0

3点間の角度

SELECT degrees( ST_Angle('POINT(0 0)', 'POINT(10 10)', 'POINT(20 0)') );

 degrees
---------
     270

4点で定義されたベクタ間の角度

SELECT degrees( ST_Angle('POINT (10 10)', 'POINT (0 0)', 'POINT(90 90)', 'POINT (100 80)') );

      degrees
-------------------
 269.9999999999999

ラインの始端と終端で定義されるベクタ間の角度

SELECT degrees( ST_Angle('LINESTRING(0 0, 0.3 0.7, 1 1)', 'LINESTRING(0 0, 0.2 0.5, 1 0)') );

      degrees
--------------
           45

関連情報

ST_Azimuth