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 参数
此方法实现了 SQL 1.1 的 OGC 简单功能规范。 s2.1.1.3
该方法实现了SQL/MM规范。 SQL-MM 3: 5.1.21
该函数支持 3d 并且不会丢失 z-index。 但是,结果仅使用 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))