Catégories :

Fonctions géospatiales

ST_DIFFERENCE

En tenant compte de deux objets GEOGRAPHY en entrée, renvoie un objet GEOGRAPHY qui représente les points du premier objet qui ne sont pas dans le second (c’est-à-dire la différence entre les deux objets).

Voir aussi :

ST_INTERSECTION , ST_UNION , ST_SYMDIFFERENCE

Syntaxe

ST_DIFFERENCE( <geography_expression_1> , <geography_expression_2> )
Copy

Arguments

geography_expression_1

Un objet GEOGRAPHY.

geography_expression_2

Un objet GEOGRAPHY.

Renvoie

La fonction renvoie une valeur de type GEOGRAPHY.

Si tous les points de geography_expression_1 sont dans geography_expression_2 (c’est-à-dire que la différence est un ensemble vide de points), la fonction renvoie NULL.

Notes sur l’utilisation

  • Si un sommet d’un objet d’entrée se trouve sur la limite de l’autre objet d’entrée (à l’exclusion des sommets), la sortie peut ne pas être précise.

  • Il n’est pas garanti que la fonction produise des résultats normalisés et/ou minimaux. Par exemple, une sortie peut consister en un LineString contenant plusieurs points qui ne forment en fait qu’un seul segment droit.

Exemples

L’exemple suivant renvoie un objet GEOGRAPHY qui représente la différence entre deux objets GEOGRAPHY d’entrée :

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_DIFFERENCE(
  TO_GEOGRAPHY('POLYGON((0 0, 1 0, 2 1, 1 2, 2 3, 1 4, 0 4, 0 0))'),
  TO_GEOGRAPHY('POLYGON((3 0, 3 4, 2 4, 1 3, 2 2, 1 1, 2 0, 3 0))'))
AS difference_between_objects;
Copy

Cet exemple produit le résultat suivant :

+-------------------------------------------------------------------------------------------------------------+
| DIFFERENCE_BETWEEN_OBJECTS                                                                                  |
|-------------------------------------------------------------------------------------------------------------|
| POLYGON((1 1,1.5 1.500171359,1 2,1.5 2.500285599,1 3,1.5 3.500399839,1 4,0 4,0 0,1 0,1.5 0.5000571198,1 1)) |
+-------------------------------------------------------------------------------------------------------------+
Copy

Les images suivantes illustrent les différences dans les zones qui représentent les objets d’entrée et de sortie :

Entrée

Sortie

Zones des objets d'entrée transmis à ST_DIFFERENCE Zones des objets de sortie renvoyés par ST_DIFFERENCE