ST_SymmetricDiff は 2 つの図形オブジェクトを引き数とし、ソース・オブジェクト間の対称差である図形オブジェクトを戻します。
ST_SymmetricDiff 関数は、座標の等しい 2 つの交差する図形について、シンメトリックの差 (スペースのブール論理 XOR ) を戻します。それらの図形が等しい場合、ST_SymmetricDiff は空の図形を戻します。それらが等しくない場合、それらの 1 つまたは両方の一部が交差領域の外側になります。 ST_SymmetricDiff は交差しない部分または部分の集合 (複数ポリゴンなど) を戻します。
ST_SymmetricDiff に次元の異なる図形が入力として渡された場合、ヌルが戻されます。
構文
db2gse.ST_SymmetricDiff(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
戻りタイプ
db2gse.ST_Geometry
例
自治体の行政責任者は、重要地域と、危険地帯から 5 マイルの範囲に交差していない地域の面積を判別する必要があります。
以下の CREATE TABLE ステートメントによって SENSITIVE_AREAS 表が作成されます。この表には、汚染の恐れがある公共施設について記述した複数の列があります。また SENSITIVE_AREAS 表には、それらの公共施設のポリゴン図形を格納する ZONE 列も含まれています。
CREATE TABLE SENSITIVE_AREAS (id integer, name varchar(128), size float, type varchar(10), zone db2gse.ST_Polygon);
以下の CREATE TABLE ステートメントは HAZARDOUS_SITES 表を作成します。この表には、地点を識別する SITE_ID 列と NAME 列が格納されています。それぞれの地点の実際の地理上の位置は、LOCATION ポイント列に格納されています。
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location point);
ST_Buffer 関数は、危険廃棄物施設の場所を取り囲む 5 マイルの緩衝地帯を生成します。 ST_SymmetricDiff 関数は、危険廃棄物施設の緩衝地帯のポリゴンと重要地域との交差部分からポリゴンを生成します。 ST_Area 関数は、それぞれの危険施設に対応する交差ポリゴンの面積を戻します。
SELECT sa.name, hs.name, db2gse.ST_Area(db2gse.ST_SymmetricDiff (db2gse.ST_Buffer(hs.location, (5 * 5280)),sa.zone)) FROM HAZARDOUS_SITES hs, SENSITIVE_AREAS sa
図 38. ST_SymmetricDiff を用いて、 重要地域 (人が居住している建物) を含んでいない危険廃棄物の地域を判別する
図 38 では、危険廃棄物施設と重要地域の対称差が、交差地域の減算結果となっています。