Kategorien:

Geodatenfunktionen

ST_DIFFERENCE

Gibt bei zwei GEOGRAPHY-Eingabeobjekten ein GEOGRAPHY-Objekt zurück, das die Punkte im ersten Objekt darstellt, die im zweiten Objekt nicht enthalten sind (d. h. die Differenz zwischen den beiden Objekten).

Siehe auch:

ST_INTERSECTION, ST_UNION, ST_SYMDIFFERENCE

Syntax

ST_DIFFERENCE( <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 alle Punkte von geography_expression_1 in geography_expression_2 enthalten sind (d. h. die 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 Differenz zwischen zwei GEOGRAPHY-Eingabeobjekten darstellt:

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_DIFFERENCE(
  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 difference_between_objects;
Copy

Dieses Beispiel ergibt die folgende Ausgabe:

+-------------------------------------------------------------------------------------------------------------+
| DIFFERENCE_BETWEEN_OBJECTS                                                                                  |
|-------------------------------------------------------------------------------------------------------------|
| POLYGON((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)) |
+-------------------------------------------------------------------------------------------------------------+
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_DIFFERENCE übergeben werden Bereiche von Ausgabeobjekten, die von ST_DIFFERENCE zurückgegeben werden