Name

ST_Difference — Berechnet eine Geometrie, die den Teil der Geometrie A darstellt, der die Geometrie B nicht schneidet.

Übersicht

geometry ST_Difference(geometry geomA, geometry geomB, float8 gridSize = -1);

Beschreibung

Gibt eine Geometrie zurück, die den Teil der Geometrie A darstellt, der die Geometrie B nicht schneidet. Dies entspricht A - ST_Intersection(A,B). Wenn A vollständig in B enthalten ist, wird eine leere atomare Geometrie des entsprechenden Typs zurückgegeben.

[Anmerkung]

Dies ist die einzige Überlagerungsfunktion, bei der die Reihenfolge der Eingabe eine Rolle spielt. ST_Difference(A, B) gibt immer einen Teil von A zurück.

If the optional gridSize parameter is given (GEOS-3.9.0 or higher required), all result vertices are guaranteed to fall on a snap-rounded grid of the specified size. Note that operations performed on a grid may contain small artifacts produced during grid alignment, 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.20

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.

Beispiele

Die Differenz der 2D-Linien.

Code
SELECT ST_Difference('LINESTRING(50 100,50 200)'::geometry,
        'LINESTRING(50 50,50 150)'::geometry
    );
Ausgabe von Rastern
LINESTRING(50 150,50 200)
Figure
Geometry figure for visual-st-difference-01

Die Differenz der 3D-Punkte.

Code
SELECT ST_Difference('MULTIPOINT(-118.58 38.38 5,-118.60 38.329 6,-118.614 38.281 7)' :: geometry,
 'POINT(-118.614 38.281 5)' :: geometry
);
Ausgabe von Rastern
MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)
Figure
Geometry figure for visual-st-difference-02