全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:ST_MAKEPOLYGON

更新时间:Aug 26, 2026

ST_MAKEPOLYGON函数通过指定外部边界(shell)和0个或者多个洞(hole)来构造Polygon类型的地理对象。

命令格式

GEOGRAPHY ST_MAKEPOLYGON(GEOGRAPHY <shell>[, ARRAY<GEOGRAPHY> <holes>])

参数说明

  • shell:必填。LineString类型的地理对象。

  • holes:可选。ARRAY类型,ARRAY中的元素是LineString类型的地理对象。

LineString (线段)类型的地理对象,可根据需求使用ST_MAKELINE 函数来构造。注意:

  • Linestring(线段)必须至少包含三个不同的顶点。

  • Linestring(线段)必须闭合:即第一个顶点和最后一个顶点必须相同。如果第一个顶点和最后一个顶点不同,则函数会构建一条从第一个顶点到最后一个顶点的最终边。

返回值说明

返回一个Polygon类型的地理对象。返回规则如下:

  • 若输入的GEOGRAPHY为NULL输入的ARRAY或ARRAY中的任何元素为NULL,则返回NULL。

  • 若输入空GEOGRAPHY,则返回报错。

  • 由于S2地理库的精度问题的影响,输入和输出可能有非常微小的差异。

使用示例

-- 指定shell,没有指定hole
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 1 0, 1 1)'));
-- 返回结果:
+--------------------------------+
| _c0                            |
+--------------------------------+
| POLYGON ((0 0, 1 0, 1 1, 0 0)) |
+--------------------------------+


-- 同时指定shell和hole
SELECT ST_MAKEPOLYGON(ST_GEOGFROMTEXT('LINESTRING(0 0, 10 0, 10 10, 0 10, 0 0)'), ARRAY(ST_GEOGFROMTEXT('LINESTRING(2 2, 2 4, 4 4, 4 2, 2 2)')));
-- 返回结果:
+--------------------------------------------------------------------+
| _c0                                                                |
+--------------------------------------------------------------------+
| POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0), (4 2, 4 4, 2 4, 2 2, 4 2)) |
+--------------------------------------------------------------------+

相关文档