Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_TESSELATE

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

功能描述

将MULTIPOLYGON或POLYHEDRALSURFACE等曲面作为输入,并通过使用三角形的细分过程返回不规则三角形格网(Triangulated Irregular Network,TIN)表示形式。

语法格式

sql
GEOMETRY ST_TESSELATE(GEOMETRY geom);

参数说明

geom:目标GEOMETRY对象。

函数返回类型

GEOMETRY类型

使用说明

  • 该函数需要SFCGAL库支持。
  • 该函数支持3D对象,并且不会删除Z坐标。
  • 该函数支持多面体表面(POLYHEDRALSURFACE)、三角形(TRIANGLE)、不规则三角形格网(Triangulated Irregular Network,TIN)类型几何对象。
  • 该函数与ST_TriangulatePolygon类似,但ST_TriangulatePolygon返回一个多边形的几何集合而不是不规则三角形格网,并且仅适用于二维几何。

示例

细分立方体:

sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_TESSELATE(ST_GEOMFROMTEXT('POLYHEDRALSURFACE Z( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
                                          ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
                                          ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
                                          ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'))));

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                          EXPR1                                                                                                                                                                          |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| TIN Z (((0 0 0,0 0 1,0 1 1,0 0 0)),((0 1 0,0 0 0,0 1 1,0 1 0)),((0 0 0,0 1 0,1 1 0,0 0 0)),((1 0 0,0 0 0,1 1 0,1 0 0)),((0 0 1,1 0 0,1 0 1,0 0 1)),((0 0 1,0 0 0,1 0 0,0 0 1)),((1 1 0,1 1 1,1 0 1,1 1 0)),((1 0 0,1 1 0,1 0 1,1 0 0)),((0 1 0,0 1 1,1 1 1,0 1 0)),((1 1 0,0 1 0,1 1 1,1 1 0)),((0 1 1,1 0 1,1 1 1,0 1 1)),((0 1 1,0 0 1,1 0 1,0 1 1))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

细分多边形:

sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_TESSELATE('POLYGON (( 10 190, 10 70, 80 70, 80 130, 50 160, 120 160, 120 190, 10 190 ))'::GEOMETRY)));

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                 EXPR1                                                                                 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| TIN(((80 130,10 70,80 70,80 130)),((50 160,10 190,10 70,50 160)),((80 130,50 160,10 70,80 130)),((120 160,120 190,50 160,120 160)),((120 190,10 190,50 160,120 190))) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+