名稱

ST_SymDifference — 計算幾何 A 和 B 不相交的部分所組成的幾何。

概要

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

描述

返回一個幾何,表示幾何 A 和 B 不相交的部分。這等同於 ST_Union(A,B) - ST_Intersection(A,B)。 它被稱為對稱差,因為 ST_SymDifference(A,B) = ST_SymDifference(B,A)

如果提供了可選的 gridSize 參數,則輸入會被捕捉到指定大小的格網上,並且結果頂點也會在同一個格網上計算。(需要 GEOS-3.9.0 或更高版本)

由 GEOS 模組執行

增強功能:3.1.0 接受 gridSize 參數。

需要 GEOS >= 3.9.0 才能使用 gridSize 參數

此方法實作了 OGC 簡單功能 SQL 1.1 的實作規格。 s2.1.1.3

此方法實作了 SQL/MM 規格。 SQL-MM 3: 5.1.21

此函數支援 3D,並且不會刪除 z 索引。但是,結果僅使用 XY 計算。結果 Z 值會被複製、平均或內插。

範例

原始的線字串一起顯示

兩個線字串的對稱差

--Safe for 2d - symmetric difference of 2 linestrings
SELECT ST_AsText(
    ST_SymDifference(
        ST_GeomFromText('LINESTRING(50 100, 50 200)'),
        ST_GeomFromText('LINESTRING(50 50, 50 150)')
    )
);

st_astext
---------
MULTILINESTRING((50 150,50 200),(50 50,50 100))
--When used in 3d doesn't quite do the right thing
SELECT ST_AsEWKT(ST_SymDifference(ST_GeomFromEWKT('LINESTRING(1 2 1, 1 4 2)'),
    ST_GeomFromEWKT('LINESTRING(1 1 3, 1 3 4)')))

st_astext
------------
MULTILINESTRING((1 3 2.75,1 4 2),(1 1 3,1 2 2.25))