类别:

地理空间函数

ST_UNION

给定两个 GEOGRAPHY 输入对象,返回一个 GEOGRAPHY 对象,它表示两个对象的形状组合集(即两个形状的并集)。

另请参阅:

ST_UNION_AGGST_INTERSECTIONST_DIFFERENCEST_SYMDIFFERENCE

语法

ST_UNION( <geography_expression_1> , <geography_expression_2> )
Copy

实参

geography_expression_1

GEOGRAPHY 对象。

geography_expression_2

GEOGRAPHY 对象。

返回

该函数返回 GEOGRAPHY 类型的值。

使用说明

  • 如果一个输入对象的任何顶点位于另一个输入对象的边界上(不包括顶点),则并集中的某些点可能在输出中多次表示,

    例如,在以下语句中:

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

    POINT(1 1) 位于 LINESTRING(1 0, 1 2) 的边界上,但不是它的顶点。

    在此示例中,不保证 ST_UNION 会产生最小输出。预期的输出应为输入线串:

    LINESTRING(1 0, 1 2)
    
    Copy

    但实际输出可能是:

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

    其中 POINT (1,1) 在输出中表示两次:一次表示为点本身,一次表示为 LineString 内的点。

示例

下面的示例返回一个 GEOGRAPHY 对象,该对象表示两个输入 GEOGRAPHY 对象的并集:

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

此示例生成以下输出:

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

下图说明了表示输入和输出对象的区域的差异:

输入

输出

传递给 ST_UNION 的输入对象的区域 ST_UNION 返回的输出对象的区域
语言: 中文