

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# ST\$1Angle
<a name="ST_Angle-function"></a>

ST\$1Angle 返回顺时针方向测量的点之间的角度（以弧度为单位），如下所示：
+ 如果输入三个点，则测量返回的角度 P1-P2-P3，就好像通过围绕 P2 顺时针从 P1 旋转到 P3 获得角度一样。
+ 如果输入四个点，则返回有向线段 P1-P2 和 P3-P4 形成的返回顺时针角度。如果输入为退化情况（即，P1 等于 P2，或 P3 等于 P4），则返回 null。

返回值以弧度为单位且在 [0, 2π) 范围内。

ST\$1Angle 对输入几何体的 2D 投影进行操作。

## 语法
<a name="ST_Angle-function-syntax"></a>

```
ST_Angle(geom1, geom2, geom3)
```

```
ST_Angle(geom1, geom2, geom3, geom4)
```

## 参数
<a name="ST_Angle-function-arguments"></a>

 *geom1*   
一个 `GEOMETRY` 数据类型的值，或一个计算结果为 `GEOMETRY` 类型的表达式。子类型必须是 `POINT`。

 *geom2*   
一个 `GEOMETRY` 数据类型的值，或一个计算结果为 `GEOMETRY` 类型的表达式。子类型必须是 `POINT`。

 *geom3*   
一个 `GEOMETRY` 数据类型的值，或一个计算结果为 `GEOMETRY` 类型的表达式。子类型必须是 `POINT`。

 *geom4*   
一个 `GEOMETRY` 数据类型的值，或一个计算结果为 `GEOMETRY` 类型的表达式。子类型必须是 `POINT`。

## 返回类型
<a name="ST_Angle-function-return"></a>

`DOUBLE PRECISION`. 

如果 *geom1* 等于 *geom2*，或者 *geom2* 等于 *geom3*，则返回 null。

如果 *geom1*、*geom2*、*geom3* 或 *geom4* 为 null，则返回 null。

如果 *geom1*、*geom2*、*geom3* 或 *geom4* 中的任何一个为空点，则返回一个错误。

如果 *geom1*、*geom2*、*geom3* 和 *geom4* 不具有相同的空间参考系统标识符（SRID）值，则返回一个错误。

## 示例
<a name="ST_Angle-function-examples"></a>

以下 SQL 返回转换为三个输入点度数的角度。

```
SELECT ST_Angle(ST_Point(1,1), ST_Point(0,0), ST_Point(1,0)) / Pi() * 180.0 AS angle;
```

```
 angle
---------------
    45
```

以下 SQL 返回转换为四个输入点度数的角度。

```
SELECT ST_Angle(ST_Point(1,1), ST_Point(0,0), ST_Point(1,0), ST_Point(2,0)) / Pi() * 180.0 AS angle;
```

```
 angle
---------------
   225
```