Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_ASX3D

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

功能描述

以 X3D xml 格式的节点元素形式返回几何图形

语法格式

sql
CLOB ST_ASX3D(GEOMETRY g1, INTEGER maxdecimaldigits=15, INTEGER options=0);

参数说明

  • geom:目标 GEOMETRY 对象。
  • maxdecimaldigits:精度。可用于限制输出坐标中小数点后的位数。可选,默认为 15。
  • options:选项位字段,可选,默认为 0。
    • 0:库顺序 X/Y。
    • 1:翻转X和Y。
    • 2:GeoSpatial GeoCoordinates 中的输出坐标。默认输出将为 GeoCoordinate geoSystem='"GD" "WE" "longitude_first"'。如果几何图形不在 WGS 84 长纬度 (srid: 4326) 中,此选项将引发错误。 这是目前唯一支持的地理坐标类型。
    • 3:即 (2 + 1),默认输出将为 GeoCoordinate geoSystem='"GD" "WE" "latitude_first"'

函数返回类型

CLOB 类型

使用说明

  1. 该函数支持 3d 并且不会丢失 z-index。
  2. 该函数支持多面体曲面。
  3. 此函数支持三角形和不规则三角网面 (TIN)。

示例

高度为 3 个单位、精度为 6 位的八角棱镜:

sql
SQL> SELECT ST_ASX3D(
     ST_TRANSLATE(
         ST_FORCE3D(
             ST_BUFFER(ST_POINT(10,10),5, 'quad_segs=2')), 0,0,
         3)
       ,6) As x3dfrag;

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                         X3DFRAG                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <IndexedFaceSet  convex='false' coordIndex='0 1 2 3 4 5 6 7'><Coordinate point='15 10 3 13.535534 6.464466 3 10 5 3 6.464466 6.464466 3 5 10 3 6.464466 13.535534 3 10 15 3 13.535534 13.535534 3 ' /></IndexedFaceSet> |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)

TIN:

sql
SQL> SELECT ST_ASX3D(ST_GEOMFROMEWKT('TIN (((
                     0 0 0,
                     0 0 1,
                     0 1 0,
                     0 0 0
                 )), ((
                     0 0 0,
                     0 1 0,
                     1 1 0,
                     0 0 0
                 ))
                 )')) As x3dfrag;

+-------------------------------------------------------------------------------------------------------------------------+
|                                                         X3DFRAG                                                         |
+-------------------------------------------------------------------------------------------------------------------------+
| <IndexedTriangleSet  index='0 1 2 3 4 5'><Coordinate point='0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0'/></IndexedTriangleSet> |
+-------------------------------------------------------------------------------------------------------------------------+

(1 row)

闭合多线串(带孔的多边形的边界):

sql
SQL> SELECT ST_ASX3D( ST_GEOMFROMEWKT('MULTILINESTRING((20 0 10,16 -12 10,0 -16 10,-12 -12 10,-20 0 10,-12 16 10,0 24 10,16 16 10,20 0 10),
       (12 0 10,8 8 10,0 12 10,-8 8 10,-8 0 10,-8 -4 10,0 -8 10,8 -4 10,12 0 10))')
     ) As x3dfrag;

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                            X3DFRAG                                                                                                                            |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <IndexedLineSet  coordIndex='0 1 2 3 4 5 6 7 0 -1 8 9 10 11 12 13 14 15 8'><Coordinate point='20 0 10 16 -12 10 0 -16 10 -12 -12 10 -20 0 10 -12 16 10 0 24 10 16 16 10 12 0 10 8 8 10 0 12 10 -8 8 10 -8 0 10 -8 -4 10 0 -8 10 8 -4 10 ' /></IndexedLineSet> |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)