ST_Buffer は図形オブジェクトと距離を引き数とし、ソース・オブジェクトを囲む図形オブジェクトを戻します。
構文
db2gse.ST_Buffer(g db2gse.ST_Geometry , [measure] Double)
戻りタイプ
db2gse.ST_Geometry
例
自治体の行政責任者が、半径 5 マイルが学校、病院、養護施設などの重要地域と重なっている危険地帯のリストを必要としています。重要地域は、以下の CREATE TABLE ステートメントを用いて作成される 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 表に格納されます。ポイントとして定義された LOCATION 列には、それぞれの危険地帯の地理上の中心の位置が格納されます。
CREATE TABLE HAZARDOUS_SITES (site_id integer, name varchar(128), location db2gse.ST_Point); INSERT INTO HAZARDOUS SITES VALUES (102, 'Allied Chemicals', db2gse.ST_PointFromText('Point(157000 475000)',coordref()..srid(0)))
SENSITIVE_AREAS 表および HAZARDOUS_SITES 表は、 db2gse.ST_Overlaps 関数によって結合されます。この関数は、SENSITIVE_AREAS 行のうち、 zone ポリゴンが HAZARDOUS_SITES location ポイントから半径 5 マイルの緩衝地帯と重なっているすべての行について 1 (TRUE) を戻します。
SELECT sa.name "Sensitive Areas", hs.name "Hazardous Sites" FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs WHERE db2gse.ST_Overlaps(sa.zone, db2gse.ST_Buffer (hs.location,(5 * 5280))) = 1;
(5 * 5280 は 5 マイルを示します。これは、1 マイルが 5280 フィートであり、 VALUES ステートメントの属する座標システムではフィートが線形の単位であることによります)。
図 29 では、この行政地域内のいくつかの重要地区が、危険地帯の位置から半径 5 マイルの緩衝地帯の中にあります。 2 つの半径 5 マイルの緩衝地帯のうち、両方が病院を含み、1 つが学校を含んでいます。ただし、養護施設は 2 つの半径の外側の安全な場所にあります。
図 29. 半径 5 マイルの緩衝地帯がポイントに適用されている