名前

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がなす角度を計算します。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)'));
出力
270
Geometry figure for visual-st-angle-01

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

コード
SELECT degrees(ST_Angle('POINT (10 10)', 'POINT (0 0)', 'POINT(90 90)', 'POINT (100 80)'));
出力
269.9999999999999
Geometry figure for visual-st-angle-02

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

コード
SELECT degrees(ST_Angle('LINESTRING(0 0,0.3 0.7,1 1)', 'LINESTRING(0 0,0.2 0.5,1 0)'));
出力
45
Geometry figure for visual-st-angle-03

関連情報

ST_Azimuth