Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_DIFFERENCE

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

功能描述

返回几何图形 A 与 B 不相交的部分。

语法格式

sql
GEOMETRY ST_DIFFERENCE(GEOMETRY geomA, GEOMETRY geomB, DOUBLE gridSize = -1);

参数说明

  • geomA:第一个目标 GEOMETRY 对象。
  • geomB:第二个目标 GEOMETRY 对象。
  • gridSize:给定大小的网格,可选。

函数返回类型

GEOMETRY 类型

使用说明

  1. 此函数相当于: A - ST_Intersection(A,B)
  2. 如果 A 完全包含在 B 中,则返回空几何结构。
  3. 此函数与输入顺序有关。ST_DIFFERENCE(A, B) 始终返回 A 的一部分。
  4. 如果指定 gridSize 参数,则输入将捕捉到给定大小的网格,并在同一网格上计算结果顶点。
  5. 此函数是由 GEOS 模块执行的。
  6. 该函数支持 3d 并且不会丢失 z-index。 但是,结果仅使用 XY 计算。 结果 Z 值被复制、平均或插值。

示例

两个线串之间的差异:

sql
SQL> SELECT ST_AsText(
         ST_Difference(
                 'LINESTRING(50 100, 50 200)'::geometry,
                 'LINESTRING(50 50, 50 150)'::geometry
             )
         );

+---------------------------+
|           EXPR1           |
+---------------------------+
| LINESTRING(50 150,50 200) |
+---------------------------+

(1 row)

3D点的差异:

sql
SQL> SELECT ST_AsEWKT( ST_Difference(
                        'MULTIPOINT(-118.58 38.38 5,-118.60 38.329 6,-118.614 38.281 7)' :: geometry,
                        'POINT(-118.614 38.281 5)' :: geometry
                       ) );

+---------------------------------------------+
|                    EXPR1                    |
+---------------------------------------------+
| MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5) |
+---------------------------------------------+

(1 row)