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. |
Si l'argument optionnel gridSize
est fourni, les entrées sont placées sur une grille de la taille donnée, et les sommets du résultat sont calculés sur cette même grille. (Nécessite GEOS-3.9.0 ou plus)
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.
|
|
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)