Kategorien:

Geodatenfunktionen

ST_SYMDIFFERENCE

Gibt bei zwei GEOGRAPHY-Eingabeobjekten ein GEOGRAPHY-Objekt zurück, das die Menge der Punkte aus beiden Eingabeobjekten darstellt, die nicht Teil der Schnittmenge der Objekte sind (d. h. die symmetrische Differenz der beiden Objekte).

Siehe auch:

ST_INTERSECTION, ST_UNION, ST_DIFFERENCE

Syntax

ST_SYMDIFFERENCE( <geography_expression_1> , <geography_expression_2> )
Copy

Argumente

geography_expression_1

Ein GEOGRAPHY-Objekt.

geography_expression_2

Ein GEOGRAPHY-Objekt.

Rückgabewerte

Die Funktion gibt einen Wert vom Typ GEOGRAPHY zurück.

Wenn geography_expression_1 und geography_expression_2 gleich sind (d. h. die symmetrische Differenz ist eine leere Punktmenge), gibt die Funktion NULL zurück.

Nutzungshinweise

  • Befindet sich ein beliebiger Punkt eines Eingabeobjekts auf der Grenze des anderen Eingabeobjekts (ohne Punkte), ist die Ausgabe möglicherweise nicht korrekt.

  • Es wird nicht garantiert, dass die Funktion normalisierte und/oder minimale Ergebnisse liefert. Eine Ausgabe könnte zum Beispiel aus einem LineString-Objekt bestehen, das mehrere Punkte enthält, die eigentlich nur ein gerades Segment bilden.

Beispiele

Im folgende Beispiel wird ein GEOGRAPHY-Objekt zurückgegeben, das die symmetrische Differenz zwischen zwei GEOGRAPHY-Eingabeobjekten darstellt:

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_SYMDIFFERENCE(
  TO_GEOGRAPHY('POLYGON((0 0, 1 0, 2 1, 1 2, 2 3, 1 4, 0 4, 0 0))'),
  TO_GEOGRAPHY('POLYGON((3 0, 3 4, 2 4, 1 3, 2 2, 1 1, 2 0, 3 0))')
) AS symmetric_difference_between_objects;
Copy

Dieses Beispiel ergibt die folgende Ausgabe:

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SYMMETRIC_DIFFERENCE_BETWEEN_OBJECTS                                                                                                                                                                                    |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1 1,1.5 1.500171359,1 2,1.5 2.500285599,1 3,1.5 3.500399839,1 4,0 4,0 0,1 0,1.5 0.5000571198,1 1)),((3 0,3 4,2 4,1.5 3.500399839,2 3,1.5 2.500285599,2 2,1.5 1.500171359,2 1,1.5 0.5000571198,2 0,3 0))) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Copy

Die folgenden Bilder veranschaulichen die Unterschiede in den Flächen, die die Eingabe- und Ausgabeobjekte darstellen:

Eingabe

Ausgabe

Bereiche von Eingabeobjekten, die an ST_SYMDIFFERENCE übergeben werden Bereiche von Ausgabeobjekten, die von ST_SYMDIFFERENCE zurückgegeben werden