Catégories :

Fonctions géospatiales

ST_UNION

En tenant compte de deux objets GEOGRAPHY en entrée, renvoie un objet GEOGRAPHY qui représente l’ensemble combiné des formes des deux objets (c’est-à-dire l’union des deux formes).

Voir aussi :

ST_UNION_AGG , ST_INTERSECTION , ST_DIFFERENCE , ST_SYMDIFFERENCE

Syntaxe

ST_UNION( <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.

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), certains points de l’union peuvent être représentés plus d’une fois dans la sortie,

    Par exemple, dans l’instruction suivante :

    SELECT ST_UNION(
      TO_GEOGRAPHY('POINT(1 1)'),
      TO_GEOGRAPHY('LINESTRING(1 0, 1 2)')
    );
    
    Copy

    POINT(1 1) est sur la limite de LINESTRING(1 0, 1 2) mais n’est pas un sommet de celle-ci.

    Dans cet exemple, il n’est pas garanti que ST_UNION produise une sortie minimale. La sortie attendue devrait être la chaîne de lignes d’entrée :

    LINESTRING(1 0, 1 2)
    
    Copy

    Mais le résultat réel pourrait être :

    GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(1 0,1 1,1 2))
    
    Copy

    POINT (1,1) est représenté deux fois dans la sortie : une fois comme le point lui-même et une fois comme un point dans la LineString.

Exemples

L’exemple suivant renvoie un objet GEOGRAPHY qui représente l’union de deux objets GEOGRAPHY d’entrée :

ALTER SESSION SET GEOGRAPHY_OUTPUT_FORMAT = 'WKT';

SELECT ST_UNION(
  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 union_of_objects;
Copy

Cet exemple produit le résultat suivant :

+-------------------------------------------------------------------------------------------------------------------------------------------+
| UNION_OF_OBJECTS                                                                                                                          |
|-------------------------------------------------------------------------------------------------------------------------------------------|
| POLYGON((3 0,3 4,2 4,1.5 3.500399839,1 4,0 4,0 0,1 0,1.5 0.5000571198,2 0,3 0),(1.5 1.500171359,1 2,1.5 2.500285599,2 2,1.5 1.500171359)) |
+-------------------------------------------------------------------------------------------------------------------------------------------+
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_UNION Zones des objets de sortie renvoyés par ST_UNION