名称

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

另请参阅

ST_Azimuth