ST_SymDifference
Name
ST_SymDifference — Returns a geometry representing the portions of geometries A and B that do not intersect.
Synopsis
geometry
ST_SymDifference
(
geometry
geomA
, geometry
geomB
, float8
gridSize = -1
)
;
Description
Returns a geometry representing the portions of geonetries A and B
that do not intersect.
This is equivalent to
ST_Union(A,B) - ST_Intersection(A,B)
.
It is called a symmetric difference because
ST_SymDifference(A,B) = ST_SymDifference(B,A)
.
If the optional
gridSize
argument is provided, the inputs are
snapped to a grid of the given size, and the result vertices are computed
on that same grid. (Requires GEOS-3.9.0 or higher)
Performed by the GEOS module
Enhanced: 3.1.0 accept a gridSize parameter - requires GEOS >= 3.9.0
This method implements the OpenGIS Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
This method implements the SQL/MM specification. SQL-MM 3: 5.1.21
This function supports 3d and will not drop the z-index. However, the result is computed using XY only. The result Z values are copied, averaged or interpolated.
Examples
|
|
--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))