ST_Difference — Berechnet eine Geometrie, die den Teil der Geometrie A darstellt, der die Geometrie B nicht schneidet.
geometry ST_Difference(
geometry geomA, geometry geomB, float8 gridSize = -1)
;
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.
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. |
Wenn das optionale Argument gridSize
angegeben wird, werden die Eingaben auf ein Gitter der angegebenen Größe gerastert, und die Ergebnispunkte werden auf demselben Gitter berechnet. (Benötigt GEOS-3.9.0 oder höher)
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.
|
|
Die Differenz der 2D-Linien.
SELECT ST_AsText( ST_Difference( 'LINESTRING(50 100, 50 200)'::geometry, 'LINESTRING(50 50, 50 150)'::geometry ) ); st_astext --------- LINESTRING(50 150,50 200)
Die Differenz der 3D-Punkte.
SELECT ST_AsEWKT( 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 ) ); st_asewkt --------- MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)