Name

ST_Difference — 计算表示几何图形A中不与几何图形B相交的部分的几何图形。

Synopsis

geometry ST_Difference(geometry geomA, geometry geomB, float8 gridSize = -1);

描述

返回表示几何A中不与几何B相交的部分的几何。这等效于 A - ST_Intersection(A,B) 。如果A完全包含在B中,则返回适当类型的空原子几何。

[Note]

这是输入顺序很重要的唯一覆盖函数。ST_Difference(A,B)总是返回A的一部分。

如果可选的 gridSize 参数,则将输入捕捉到给定大小的栅格,并在该栅格上计算结果顶点。(需要GEOS-3.9.0或更高版本)

由GEOS模块执行

增强:3.1.0接受GRIDSIZE参数-需要GEOS > =3.9.0

This method implements the OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3

This method implements the SQL/MM specification. SQL-MM 3:5.1.20

This function supports 3d and will not drop the z-index. 但是,结果仅使用XY计算。结果Z值被复制、平均或内插。

示例

输入的线串

两条线串的区别

二维线串的区别。

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

st_astext
---------
LINESTRING(50 150,50 200)

三维点的差异。

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

st_asewkt
---------
MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)

另请参阅

ST_SymDifference, ST_Intersection, ST_Union