Categories:

Fonctions géospatiales

# ST_UNION¶

Given two input GEOGRAPHY objects, returns a GEOGRAPHY object that represents the combined set of all points from both objects (i.e. the union of the two objects).

## Syntax¶

ST_UNION( <geography_expression_1> , <geography_expression_2> )


## Arguments¶

geography_expression_1

A GEOGRAPHY object.

geography_expression_2

A GEOGRAPHY object.

## Returns¶

The function returns a value of type GEOGRAPHY.

## Usage Notes¶

• If any vertex of one input object is on the boundary of the other input object (excluding the vertices), some points in the union might be represented more than once in the output,

For example, in the following statement:

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


POINT(1 1) is on the boundary of LINESTRING(1 0, 1 2) but is not a vertex of it.

In this example, ST_UNION is not guaranteed to produce minimal output. The expected output should be the input linestring:

LINESTRING(1 0, 1 2)


But the actual output might be:

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


where POINT (1,1) is represented twice in the output: once as the point itself and once as a point within the LineString.

## Examples¶

The following example returns a GEOGRAPHY object that represents the union of two input GEOGRAPHY objects:

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;


This example produces the following output:

+-------------------------------------------------------------------------------------------------------------------------------------------+
| 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)) |
+-------------------------------------------------------------------------------------------------------------------------------------------+


The following images illustrate the differences in the areas that represent the input and output objects:

Input

Output

Revenir au début