Namn

ST_Difference — Beräknar en geometri som representerar den del av geometri A som inte skär geometri B.

Synopsis

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

Beskrivning

Returnerar en geometri som representerar den del av geometri A som inte skär geometri B. Detta är ekvivalent med A - ST_Intersection(A,B). Om A är helt innesluten i B returneras en tom atomgeometri av lämplig typ.

[Notera]

Detta är den enda överlagringsfunktionen där inmatningsordningen har betydelse. ST_Difference(A, B) returnerar alltid en del av A.

Om den valfria parametern gridSize anges (GEOS-3.9.0 eller senare krävs) garanteras att alla resultatnoder hamnar på ett snäppavrundat rutnät med angiven storlek. Observera att åtgärder på ett rutnät kan innehålla små artefakter som uppkommer vid justering mot rutnätet, se ST_ReducePrecision.

Utförs av GEOS-modulen

Förbättrad: 3.1.0 accepterar en gridSize-parameter.

Kräver GEOS >= 3.9.0 för att använda parametern gridSize.

Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1. s2.1.1.3

Denna metod implementerar SQL/MM-specifikationen. SQL-MM 3: 5.1.20

Denna funktion stöder 3d och kommer inte att tappa z-index. Resultatet beräknas dock endast med hjälp av XY. De resulterande Z-värdena kopieras, medelvärdesbildas eller interpoleras.

Exempel

Skillnaden mellan 2D-linestrings.

Kod
SELECT ST_Difference('LINESTRING(50 100,50 200)'::geometry,
        'LINESTRING(50 50,50 150)'::geometry
    );
Utdata
LINESTRING(50 150,50 200)
Figur
Geometry figure for visual-st-difference-01

Skillnaden mellan 3D-punkter.

Kod
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
);
Utdata
MULTIPOINT(-118.6 38.329 6,-118.58 38.38 5)
Figur
Geometry figure for visual-st-difference-02