ST_Difference — 計算幾何 A 中不與幾何 B 相交的部分的幾何形狀。
geometry ST_Difference(
geometry geomA, geometry geomB, float8 gridSize = -1)
;
返回一個幾何形狀,表示幾何 A 中不與幾何 B 相交的部分。這等同於 A - ST_Intersection(A,B)
。如果 A 完全包含在 B 中,則會返回一個適當類型的空原子幾何形狀。
![]() |
|
這是唯一輸入順序重要的疊加函數。ST_Difference(A, 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.20
此函數支援 3D,並且不會捨棄 z 索引。但是,結果僅使用 XY 計算。結果 Z 值會被複製、平均或內插。
![]() 輸入的線字串
|
![]() 兩個線字串的差集
|
2D 線字串的差集。
SELECT ST_AsText( ST_Difference( 'LINESTRING(50 100, 50 200)'::geometry, 'LINESTRING(50 50, 50 150)'::geometry ) ); st_astext --------- LINESTRING(50 150,50 200)
3D 點的差集。
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)