カテゴリ:

地理空間関数

ST_UNION

2つの入力 GEOGRAPHY オブジェクトを与えると、オブジェクト両方の形状を組み合わせたセット(つまり、2つの形状の和集合)を表す GEOGRAPHY オブジェクトを返します。

こちらもご参照ください。

ST_UNION_AGG , ST_INTERSECTION , ST_DIFFERENCE , ST_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) は出力で2回表されます。1回はポイント自体として、もう1回は LineString 内のポイントとして表されます。

次の例では、2つの入力 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 が返す出力オブジェクトの領域