カテゴリ:

地理空間関数

ST_SYMDIFFERENCE

2つの入力 GEOGRAPHY オブジェクトを与えると、オブジェクトの共通部分の一部ではない入力オブジェクト両方からのポイントのセット(つまり、2つのオブジェクトの 対称差)を表す GEOGRAPHY オブジェクトを返します。

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

ST_INTERSECTIONST_UNIONST_DIFFERENCE

構文

ST_SYMDIFFERENCE( <geography_expression_1> , <geography_expression_2> )
Copy

引数

geography_expression_1

GEOGRAPHY オブジェクトです。

geography_expression_2

GEOGRAPHY オブジェクトです。

戻り値

この関数は、 GEOGRAPHY 型の値を返します。

geography_expression_1geography_expression_2 が等しい場合(つまり、対称差が空のポイントのセットである場合)、関数は NULL を返します。

使用上の注意

  • ある入力オブジェクトのいずれかの頂点が別の入力オブジェクトの境界上にある(頂点を除く)と、出力が不正確になる可能性があります。

  • この関数は、正規化された結果や最小限の結果を生成することが保証されていません。たとえば、出力は、実際には単一の直線セグメントを形成する複数のポイントを含んだ、 LineString で構成されている可能性があります。

次の例では、2つの入力 GEOGRAPHY オブジェクト間の対称差を表す GEOGRAPHY オブジェクトを返します。

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

この例では、次の出力が生成されます。

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

次の画像は、入力オブジェクトと出力オブジェクトを表す領域の差異を示しています。

入力

出力

ST_SYMDIFFERENCE に渡される入力オブジェクトの領域 ST_SYMDIFFERENCE が返す出力オブジェクトの領域