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))) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+