空間リレーションシップ

GIS の主要な目的は、あるフィーチャ同士が重なり合うのか、一方が他方に包含されているのか、一方が他方と交差しているのかといった、フィーチャ間の空間リレーションシップの判断です。

ジオメトリの空間的な関係はさまざまなものが考えられます。以下に、ジオメトリが別のジオメトリとの間にどのような空間リレーションシップをもつことができるかの例を示します。

こうしたリレーションシップの有無を判断するには、空間リレーションシップ関数を実行します。この種の関数では、クエリで指定したジオメトリについて次のプロパティが比較されます。

空間リレーションシップのクエリを構築する際は、検索する空間リレーションシップのタイプおよび比較の対象となるジオメトリを指定します。このクエリでは、指定した空間リレーションシップにジオメトリが相互に参加しているか、参加していないかが true または false として返されます。多くの場合、空間リレーションシップのクエリを WHERE 句に設定することで、結果セットにフィルタを適用するために使用します。

たとえば、提案されている開発用地の位置が格納されたテーブル、および考古学的に重要な場所の位置が格納されたテーブルがある場合には、開発用地のテーブルのフィーチャが考古学的な場所に交差していないことを確認することが考えられます。このようなときには、考古学的な場所に交差する開発用地がないことを確認し、交差がある場合は該当する開発案の ID を返すクエリを発行するとよいでしょう。この例では、ST_Disjoint 関数を使用しています。

SELECT d.projname,a.siteid
FROM dev d, archsites a
WHERE sde.st_disjoint(d.shape,a.shape)= 'f' 

projname        siteid

bow wow chow    A1009

このクエリでは、分断されていない、つまり互いに交差している用地である開発の名前と考古学的な場所の ID が返されます。考古学的な場所である A1009 に交差する 1 つの開発プロジェクト Bow Wow Chow が返されます。

Oracle や PostgreSQL で空間リレーションシップを評価する ST_Geometry については、「ST_Geometry 用の空間リレーションシップ関数」をご参照ください。IBM DB2、IBM Informix、Oracle Spatial、PostGIS、または Microsoft SQL Server の各空間タイプで使用する空間リレーションシップ関数については、各データ管理システムのドキュメントをご参照ください。

関連項目


3/6/2012