Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_MAKEPOLYGON

📄字数 774
👁️阅读量 加载中...

功能描述

由给定边界构造多边形对象。

语法格式

sql
GEOMETRY ST_MAKEPOLYGON(GEOMETRY linestring);

参数说明

  • linestring:边界的 LINESTRING 对象。

函数返回类型

GEOMETRY类型

使用说明

  1. 该函数支持 3d 并且不会丢失 z-index。
  2. 输入几何图形必须是闭合的线串(环)。
  3. 此函数不接受多行字符串。 使用 ST_LINEMERGE 生成线串。它还使用 ST_DUMP 来提取线串。

示例

从 2D 线串生成多边形:

sql

SQL> SELECT ST_AsText(ST_MakePolygon(ST_GeomFromText('LINESTRING(75 29,77 29,77 29, 75 29)')));

+------------------------------------+
|               EXPR1                |
+------------------------------------+
| POLYGON((75 29,77 29,77 29,75 29)) |
+------------------------------------+

使用 ST_StartPoint 和 ST_AddPoint闭合开放线串以生成面:

sql

SQL> SELECT ST_AsText(ST_MakePolygon( ST_AddPoint(foo.open_line, ST_StartPoint(foo.open_line))))
     FROM (
       SELECT ST_GeomFromText('LINESTRING(75 29,77 29,77 29, 75 29)') As open_line) As foo;

+------------------------------------------+
|                  EXPR1                   |
+------------------------------------------+
| POLYGON((75 29,77 29,77 29,75 29,75 29)) |
+------------------------------------------+

从 3D 线串生成多边形:

sql

SQL> SELECT ST_AsEWKT( ST_MakePolygon( 'LINESTRING(75.15 29.53 1,77 29 1,77.6 29.5 1, 75.15 29.53 1)'));

+------------------------------------------------------------+
|                           EXPR1                            |
+------------------------------------------------------------+
| POLYGON((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1)) |
+------------------------------------------------------------+

从具有 M 值的线串生成多边形:

sql
SQL> SELECT ST_AsEWKT( ST_MakePolygon( 'LINESTRINGM(75.15 29.53 1,77 29 1,77.6 29.5 2, 75.15 29.53 2)'));

+-------------------------------------------------------------+
|                            EXPR1                            |
+-------------------------------------------------------------+
| POLYGONM((75.15 29.53 1,77 29 1,77.6 29.5 2,75.15 29.53 2)) |
+-------------------------------------------------------------+