Name

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.

Synopsis

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

Description

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.

[Note]

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.

Exemples

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)