名稱

ST_Difference — 計算幾何 A 中不與幾何 B 相交的部分的幾何形狀。

概要

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 才能使用 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)