使用者の手引きおよび解説書

ST_Disjoint

ST_Disjoint は 2 つの図形を引き数とし、 2 つの図形の交差が空のセットを生成する場合に 1 (TRUE) を戻し、そうでない場合に 0 (FALSE) を戻します。

構文

db2gse.ST_Disjoint(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)

戻りタイプ

整数

ある保険会社で、保険の対象となる町の病院、養護施設、および学校を決定する必要があります。この手順には、それぞれの公共施設に対する危険な廃棄物施設の影響がどの程度かを判別することが含まれます。この保険会社では、汚染される危険のない公共施設だけを保険の対象として考慮しようと考えています。保険会社に依頼された GIS コンサルタントは、危険な廃棄物施設から半径 5 マイル以内にないすべての公共施設を特定するという任務を与えられています。

SENSITIVE_AREAS 表には、汚染の恐れがある公共施設について記述する複数の列と、それらの公共施設のポリゴン図形を格納する ZONE 列が含まれています。

CREATE TABLE SENSITIVE_AREAS (id        integer,
                              name      varchar(128),
                              size      float,
                              type      varchar(10),
                              zone      db2gse.ST_Polygon);

HAZARDOUS_SITES 表には、地点を識別する SITE_ID 列と NAME 列が格納されています。それぞれの地点の実際の地理上の位置は、LOCATION 列に格納されています。

CREATE TABLE HAZARDOUS_SITES (site_id   integer,
                              name      varchar(128),
                              location  db2gse.ST_Point);

以下の SELECT ステートメントによって、危険な廃棄物の区域から半径 5 マイル以内にない重要地域の名前がすべてリストされます。関数の結果が 1 ではなく 0 に等しく設定されている場合は、この照会では、ST_Intersects 関数で ST_Disjoint 関数を置き換えることもできます。これは、ST_Intersects と ST_Disjoint が正反対の結果を戻すためです。

SELECT sa.name
FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs
WHERE db2gse.ST_Disjoint(db2gse.ST_Buffer(hs.location,(5 * 5280)),sa.zone) = 1;

図 32 では、重要地域が危険な廃棄物地域の半径 5 マイルと比較されています。 ST_Disjoint 関数が 1 (TRUE) を戻す重要地域は、養護施設だけです。 2 つの図形がまったく交差しない場合、ST_Disjoint 関数は常に 1 を戻します。

図 32. ST_Disjoint を用いて、(交差する) 危険な廃棄物施設の地域にない建物を見つける

top


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]