Catégories :

Fonctions géospatiales

ST_SYMDIFFERENCE

En tenant compte de deux objets d’entrée GEOGRAPHY, renvoie un objet GEOGRAPHY qui représente l’ensemble des points des deux objets d’entrée qui ne font pas partie de l’intersection des objets (c’est-à-dire la différence symétrique des deux objets).

Voir aussi :

ST_INTERSECTION , ST_UNION , ST_DIFFERENCE

Syntaxe

ST_SYMDIFFERENCE( <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 geography_expression_1 et geography_expression_2 sont égaux (c’est-à-dire que la différence symétrique 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 symétrique entre deux objets GEOGRAPHY d’entrée :

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_SYMDIFFERENCE(
  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 symmetric_difference_between_objects;
Copy

Cet exemple produit le résultat suivant :

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SYMMETRIC_DIFFERENCE_BETWEEN_OBJECTS                                                                                                                                                                                    |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((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)),((3 0,3 4,2 4,1.5 3.500399839,2 3,1.5 2.500285599,2 2,1.5 1.500171359,2 1,1.5 0.5000571198,2 0,3 0))) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
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_SYMDIFFERENCE Zones des objets de sortie renvoyés par ST_SYMDIFFERENCE