ST_Difference — Calcule une géométrie représentant la partie de la géométrie A qui n'intersecte pas la géométrie B.
geometry ST_Difference(
geometry geomA, geometry geomB, float8 gridSize = -1)
;
Renvoie une géométrie représentant la partie de la géométrie A qui n'intersecte pas la géométrie B. Ceci est équivalent à A - ST_Intersection(A,B)
. Si A est entièrement contenue dans B, une géométrie atomique vide du type approprié est renvoyée.
![]() |
|
Il s'agit de la seule fonction de superposition pour laquelle l'ordre d'entrée est important. ST_Difference(A, B) renvoie toujours une partie de A. |
If the optional gridSize
parameter is given (GEOS-3.9.0 or higher required), all result vertices are guaranteed to fall on a grid of the specified size. For the operation to give predictable results all the input vertices must fall already on the specified grid, see ST_ReducePrecision.
Effectué par le module GEOS
Amélioration : 3.1.0 accepte un paramètre gridSize.
Nécessite GEOS >= 3.9.0 pour utiliser le paramètre gridSize.
Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 5.1.20
Cette fonction prend en charge la 3D et ne supprime pas l'indice z. Cependant, le résultat est calculé en utilisant uniquement XY. Les valeurs Z résultantes sont copiées, moyennées ou interpolées.
![]() Les lignes en entrée
|
![]() La différence entre les deux lignes
|
La différence entre les lignes 2D.
SELECT ST_AsText( ST_Difference( 'LINESTRING(50 100, 50 200)'::geometry, 'LINESTRING(50 50, 50 150)'::geometry ) ); st_astext --------- LINESTRING(50 150,50 200)
La différence entre les points 3D.
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)
ST_SymDifference, ST_Intersection, ST_Union, ST_ReducePrecision