ST_Difference — Beräknar en geometri som representerar den del av geometri A som inte skär geometri B.
geometry ST_Difference(
geometry geomA, geometry geomB, float8 gridSize = -1)
;
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.
![]() |
|
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 resultatpunkter hamnar i ett rutnät med den angivna storleken. För att operationen ska ge förutsägbara resultat måste alla inmatade hörn redan falla på det angivna 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.
![]() De inmatade linestrings
|
![]() Skillnaden mellan de två linestrings
|
Skillnaden mellan 2D-linestrings.
SELECT ST_AsText( ST_Difference( 'LINESTRING(50 100, 50 200)'::geometry, 'LINESTRING(50 50, 50 150)'::geometry ) ); st_astext --------- LINESTRING(50 150,50 200)
Skillnaden mellan 3D-punkter.
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)