ST_SymDifference — Berechnet eine Geometrie, die die Teile der Geometrien A und B darstellt, die sich nicht überschneiden.
geometry ST_SymDifference(
geometry geomA, geometry geomB, float8 gridSize = -1)
;
Gibt eine Geometrie zurück, die die Teile der Geodäten A und B darstellt, die sich nicht schneiden. Dies ist äquivalent zu ST_Union(A,B) - ST_Intersection(A,B)
. Es wird als symmetrische Differenz bezeichnet, weil ST_SymDifference(A,B) = ST_SymDifference(B,A)
.
If the optional gridSize
parameter is given (GEOS-3.9.0 or higher required), all result vertices are guaranteed to fall on a grid of the specified size. For the operation to give predictable results all the input vertices must fall already on the specified grid, see ST_ReducePrecision.
Wird durch das GEOS Modul ausgeführt
Verbessert: 3.1.0 akzeptiert einen gridSize-Parameter.
Erfordert GEOS >= 3.9.0 zur Verwendung des Parameters gridSize
Diese Methode implementiert die OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Diese Methode setzt die SQL/MM-Spezifikation um. SQL-MM 3: 5.1.21
Diese Funktion unterstützt 3d und lässt den Z-Index nicht fallen. Das Ergebnis wird jedoch nur mit XY berechnet. Die Z-Werte des Ergebnisses werden kopiert, gemittelt oder interpoliert.
![]() Die ursprünglichen Linienstränge werden zusammen angezeigt
|
![]() Die symmetrische Differenz der beiden Linienstränge
|
--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))
ST_Difference, ST_Intersection, ST_Union, ST_ReducePrecision