

 从补丁 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\$1MakePolygon
<a name="ST_MakePolygon-function"></a>

ST\$1MakePolygon 具有两个可返回面的变体。一个采用单个几何体，另一个采用两个几何体。
+ 第一个变体的输入是定义输出面的外环的线串。
+ 第二个变体的输入是一个线串和一个多线串。两个都是空的或闭合的。

  输出面外环的边界是输入线串，而面内环的边界是输入多线串中的线串。如果输入线串为空，则返回空面。多线串中的空线串将被忽略。生成的几何体的空间参考系统标识符 (SRID) 是两个输入几何体的共同 SRID。

返回的几何体的维度与输入几何体的维度相同。外环和内环必须具有相同维度。

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

```
ST_MakePolygon(geom1)
```

```
ST_MakePolygon(geom1, geom2)
```

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

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

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

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

`GEOMETRY`子类型 的 `POLYGON`。

返回的几何体的空间参考系统标识符 (SRID) 等于输入的 SRID。

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

如果 *geom1* 不是线串，则返回一个错误。

如果 *geom2* 不是多线串，则返回一个错误。

如果 *geom1* 不是闭合的，则返回一个错误。

如果 *geom1* 是单个点或者不是闭合的，则返回一个错误。

如果 *geom2* 至少包含一个具有单个点或未闭合的线串，则返回一个错误。

如果 *geom1* 和 *geom2* 具有不同的 SRID 值，则返回一个错误。

如果 *geom1* 和 *geom2* 具有不同的维度，则返回一个错误。

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

以下 SQL 从输入线串返回多边形。

```
SELECT ST_AsText(ST_MakePolygon(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)')));
```

```
 st_astext
---------------
POLYGON((77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07))
```

以下 SQL 根据闭合线串和闭合多线串创建面。线串用于面的外环。多线串中的线串用于面的内环。

```
SELECT ST_AsEWKT(ST_MakePolygon(ST_GeomFromText('LINESTRING(0 0,10 0,10 10,0 10,0 0)'), ST_GeomFromText('MULTILINESTRING((1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))')));
```

```
 st_astext
----------------------------------
POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 2,2 1,1 1),(3 3,3 4,4 3,3 3))
```