ST_SymDifference — Beräknar en geometri som representerar de delar av geometrierna A och B som inte korsar varandra.
geometry ST_SymDifference(geometry geomA, geometry geomB, float8 gridSize = -1);
Returnerar en geometri som representerar de delar av geonetrierna A och B som inte skär varandra. Detta är likvärdigt med ST_Union(A,B) - ST_Intersection(A,B). Det kallas en symmetrisk differens eftersom ST_SymDifference(A,B) = ST_SymDifference(B,A)..
Om den valfria parametern gridSize anges (GEOS-3.9.0 eller senare krävs) garanteras att alla resultatnoder hamnar på ett snäppavrundat rutnät med angiven storlek. Observera att åtgärder på ett rutnät kan innehålla små artefakter som uppkommer vid justering mot rutnätet, se ST_ReducePrecision.
Utförs av GEOS-modulen
Förbättrad: 3.1.0 accepterar en gridSize-parameter.
Kräver GEOS >= 3.9.0 för att använda parametern gridSize
Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1. s2.1.1.3
Denna metod implementerar SQL/MM-specifikationen. SQL-MM 3: 5.1.21
Denna funktion stöder 3d och kommer inte att tappa z-index. Resultatet beräknas dock endast med hjälp av XY. De resulterande Z-värdena kopieras, medelvärdesbildas eller interpoleras.
Det här exemplet visar en 2D-säker symmetrisk differens mellan två LineStrings.
SELECT ST_SymDifference('LINESTRING(50 100,50 200)',
'LINESTRING(50 50,50 150)'
);
MULTILINESTRING((50 150,50 200),(50 50,50 100))
I 3D ger det här exemplet inte det förväntade resultatet.
SELECT ST_SymDifference('LINESTRING(1 2 1,1 4 2)',
'LINESTRING(1 1 3,1 3 4)');
MULTILINESTRING((1 3 4,1 4 2),(1 1 3,1 2 1))
ST_Difference, ST_Intersection, ST_Union, ST_ReducePrecision