ST_Angle — 3点もしくは4点、または2線で定義される二つのベクタ間の角度を返します。
float ST_Angle(
geometry point1, geometry point2, geometry point3, geometry point4)
;
float ST_Angle(
geometry line1, geometry line2)
;
二つのベクタの時計回りの角度を計算します。
1番目の形式: ポイントP1-P2-P3で囲まれた角度の計算。四つ目のポイントが与えられた場合には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