Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_3DDIFFERENCE

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

功能描述

计算3D几何图形的差异,返回geom1中不属于geom2的部分。

语法格式

sql
GEOMETRY ST_3DDIFFERENCE(GEOMETRY geom1, GEOMETRY geom2);

参数说明

  • geom1:第一个目标GEOMETRY对象。
  • geom2:第二个目标GEOMETRY对象。

函数返回类型

GEOMETRY类型

使用说明

  • 该函数需要SFCGAL库支持。
  • 该函数支持3D对象,并且不会删除Z坐标。
  • 该函数支持多面体表面(POLYHEDRALSURFACE)、三角形(TRIANGLE)、不规则三角形格网(Triangulated Irregular Network,TIN)类型几何对象。

示例

使用ST_AsX3D生成两个原始的3D图像geom1和geom2:

sql
SQL> SELECT
          TO_CHAR(ST_AsX3D(ST_Extrude(ST_Buffer(ST_GeomFromText('POINT(100 90)'),
                                          50, 'quad_segs=2'),0,0,30))) AS geom1,
          TO_CHAR(ST_AsX3D(ST_Extrude(ST_Buffer(ST_GeomFromText('POINT(80 80)'),
                                          50, 'quad_segs=1'),0,0,30))) AS geom2;

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               GEOM1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                        GEOM2                                                                                                                                                                                                                                        |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <IndexedFaceSet convex='false'  coordIndex='0 1 2 3 4 5 6 7 -1 8 9 10 11 12 13 14 15 -1 16 17 18 19 -1 20 21 22 23 -1 24 25 26 27 -1 28 29 30 31 -1 32 33 34 35 -1 36 37 38 39 -1 40 41 42 43 -1 44 45 46 47'><Coordinate point='150 90 0 135.35533905932738 54.64466094067263 0 100 40 0 64.64466094067262 54.64466094067262 0 50 90 0 64.64466094067262 125.35533905932738 0 99.99999999999999 140 0 135.35533905932738 125.35533905932738 0 150 90 30 135.35533905932738 125.35533905932738 30 99.99999999999999 140 30 64.64466094067262 125.35533905932738 30 50 90 30 64.64466094067262 54.64466094067262 30 100 40 30 135.35533905932738 54.64466094067263 30 150 90 0 150 90 30 135.35533905932738 54.64466094067263 30 135.35533905932738 54.64466094067263 0 135.35533905932738 54.64466094067263 0 135.35533905932738 54.64466094067263 30 100 40 30 100 40 0 100 40 0 100 40 30 64.64466094067262 54.64466094067262 30 64.64466094067262 54.64466094067262 0 64.64466094067262 54.64466094067262 0 64.64466094067262 54.64466094067262 30 50 90 30 50 90 0 50 90 0 50 90 30 64.64466094067262 125.35533905932738 30 64.64466094067262 125.35533905932738 0 64.64466094067262 125.35533905932738 0 64.64466094067262 125.35533905932738 30 99.99999999999999 140 30 99.99999999999999 140 0 99.99999999999999 140 0 99.99999999999999 140 30 135.35533905932738 125.35533905932738 30 135.35533905932738 125.35533905932738 0 135.35533905932738 125.35533905932738 0 135.35533905932738 125.35533905932738 30 150 90 30 150 90 0' /></IndexedFaceSet> | <IndexedFaceSet convex='false'  coordIndex='0 1 2 3 -1 4 5 6 7 -1 8 9 10 11 -1 12 13 14 15 -1 16 17 18 19 -1 20 21 22 23'><Coordinate point='130 80 0 80 30 0 30 80 0 79.99999999999999 130 0 130 80 30 79.99999999999999 130 30 30 80 30 80 30 30 130 80 0 130 80 30 80 30 30 80 30 0 80 30 0 80 30 30 30 80 30 30 80 0 30 80 0 30 80 30 79.99999999999999 130 30 79.99999999999999 130 0 79.99999999999999 130 0 79.99999999999999 130 30 130 80 30 130 80 0' /></IndexedFaceSet> |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

使用ST_AsX3D生成图像geom1和geom2的差异,即geom1 - geom2:

sql
SQL> SELECT TO_CHAR(ST_AsX3D(ST_3DDifference(geom1,geom2),3))
                                      FROM ( SELECT ST_Extrude(ST_Buffer(ST_GeomFromText('POINT(100 90)'),
                                      50, 'quad_segs=2'),0,0,30) AS geom1,
                                      ST_Extrude(ST_Buffer(ST_GeomFromText('POINT(80 80)'),
                                      50, 'quad_segs=1'),0,0,30) AS geom2 ) As t;

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     EXPR1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <IndexedFaceSet convex='false'  coordIndex='0 1 2 -1 3 4 5 -1 6 7 8 -1 9 10 11 -1 12 13 14 -1 15 16 17 -1 18 19 20 -1 21 22 23 -1 24 25 26 -1 27 28 29 -1 30 31 32 -1 33 34 35 -1 36 37 38 -1 39 40 41 -1 42 43 44 -1 45 46 47 -1 48 49 50 -1 51 52 53 -1 54 55 56 -1 57 58 59 -1 60 61 62 -1 63 64 65 -1 66 67 68 -1 69 70 71 -1 72 73 74 -1 75 76 77 -1 78 79 80 -1 81 82 83 -1 84 85 86 -1 87 88 89 -1 90 91 92 -1 93 94 95 -1 96 97 98 -1 99 100 101 -1 102 103 104 -1 105 106 107 -1 108 109 110 -1 111 112 113 -1 114 115 116 -1 117 118 119 -1 120 121 122 -1 123 124 125 -1 126 127 128 -1 129 130 131 -1 132 133 134 -1 135 136 137 -1 138 139 140 -1 141 142 143 -1 144 145 146 -1 147 148 149 -1 150 151 152 -1 153 154 155 -1 156 157 158 -1 159 160 161 -1 162 163 164 -1 165 166 167 -1 168 169 170 -1 171 172 173 -1 174 175 176 -1 177 178 179 -1 180 181 182 -1 183 184 185'><Coordinate point='100 140 0 85 125 0 80 130 0 126.36 76.36 0 130 80 0 135.355 54.645 0 135.355 125.355 0 150 90 0 100 140 0 150 90 30 135.355 125.355 30 100 140 30 85 125 30 120 90 30 100 140 30 92.929 42.929 30 100 40 30 104.645 54.645 30 135.355 54.645 30 130 80 30 113.64 63.64 30 135.355 54.645 0 150 90 30 135.355 54.645 30 135.355 54.645 0 150 90 0 150 90 30 100 40 0 135.355 54.645 30 100 40 30 100 40 0 135.355 54.645 0 135.355 54.645 30 92.929 42.929 0 100 40 0 92.929 42.929 7.757 57.071 107.071 15.515 64.645 125.355 30 64.645 125.355 0 100 140 0 64.645 125.355 30 100 140 30 100 140 0 64.645 125.355 0 64.645 125.355 30 135.355 125.355 0 100 140 30 135.355 125.355 30 135.355 125.355 0 100 140 0 100 140 30 150 90 0 135.355 125.355 30 150 90 30 150 90 0 135.355 125.355 0 135.355 125.355 30 120 90 30 150 90 30 100 140 30 95 45 0 100 40 0 92.929 42.929 0 57.071 107.071 30 64.645 125.355 30 57.071 107.071 15.515 135.355 54.645 30 104.645 54.645 30 100 40 30 80 130 30 85 125 30 100 140 30 64.645 125.355 30 80 130 30 100 140 30 80 130 30 64.645 125.355 30 57.071 107.071 30 113.64 63.64 30 104.645 54.645 30 135.355 54.645 30 85 125 0 100 140 0 121.213 88.787 0 135.355 54.645 0 113.64 63.64 0 126.36 76.36 0 100 40 30 92.929 42.929 30 92.929 42.929 24 150 90 0 135.355 54.645 0 130 80 0 150 90 0 130 80 0 121.213 88.787 0 150 90 0 121.213 88.787 0 100 140 0 100 140 0 80 130 0 64.645 125.355 0 57.071 107.071 0 64.645 125.355 0 80 130 0 150 90 30 120 90 30 130 80 30 150 90 30 130 80 30 135.355 54.645 30 57.071 107.071 0 57.071 107.071 13.757 64.645 125.355 0 64.645 125.355 0 57.071 107.071 13.757 57.071 107.071 15.515 100 40 0 95 45 0 113.64 63.64 0 100 40 0 113.64 63.64 0 135.355 54.645 0 100 40 30 92.929 42.929 24 92.929 42.929 7.757 92.929 42.929 7.757 100 40 0 100 40 30 130 80 30 113.64 63.64 0 92.929 42.929 7.757 80 130 0 57.071 107.071 15.515 57.071 107.071 13.757 80 130 30 130 80 0 85 125 30 130 80 0 80 130 30 121.213 88.787 0 120 90 30 85 125 30 130 80 0 130 80 30 120 90 30 130 80 0 92.929 42.929 7.757 95 45 0 92.929 42.929 0 92.929 42.929 7.757 113.64 63.64 0 95 45 0 130 80 30 126.36 76.36 0 113.64 63.64 0 130 80 30 130 80 0 126.36 76.36 0 85 125 0 121.213 88.787 0 80 130 30 80 130 0 85 125 0 80 130 30 80 130 0 57.071 107.071 13.757 57.071 107.071 0 130 80 30 92.929 42.929 7.757 113.64 63.64 30 92.929 42.929 7.757 104.645 54.645 30 113.64 63.64 30 92.929 42.929 24 92.929 42.929 30 104.645 54.645 30 92.929 42.929 7.757 92.929 42.929 24 104.645 54.645 30 57.071 107.071 15.515 80 130 30 57.071 107.071 30 80 130 0 80 130 30 57.071 107.071 15.515' /></IndexedFaceSet> |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

使用X3Dom HTML Javascript渲染库,以HTML形式渲染,如图1图2所示。

图1 原始3D几何图形叠加
图2 geom1删除geom2剩余部分