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)
。
可用性:2.5.0
三点之间的夹角
SELECT degrees( ST_Angle('POINT(0 0)', 'POINT(10 10)', 'POINT(20 0)') );
degrees
---------
270
由四个点定义的矢量之间的角度
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