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 值被复制、平均或插值。
|
|
二维线串的差异。
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)