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