2

ポイント座標があるプロジェクトに IBM Informix を使用する必要があり、クエリの長​​方形領域に存在するポイントを見つける必要があります。

Informix には、ST_POINT および ST_POLYGON データ オブジェクトを含む空間データブレード モジュールがあります。そのようなオブジェクトを含むテーブルに r-tree インデックスを作成、挿入、および作成する方法を知っています。

しかし、問題は、特定の長方形領域内のすべてのポイントをリストする SELECT ステートメントを実行する方法です。

4

1 に答える 1

1

Spatial Datablade のドキュメントは手元にありますか? IDS 11.50 Info Centerで入手できます。

たとえば、第 1 章のセクションでは、空間クエリの実行について説明しています。

空間クエリの実行

GIS アプリケーションの一般的なタスクは、空間データの可視サブセットを取得してウィンドウに表示することです。これを行う最も簡単な方法は、ウィンドウの境界を表すポリゴンを定義し、SE_EnvelopesIntersect() 関数を使用して、このウィンドウに重なるすべての空間オブジェクトを見つけることです。

SELECT name, type, zone FROM sensitive_areas
   WHERE SE_EnvelopesIntersect(zone, 
      ST_PolyFromText('polygon((20000 20000,60000 20000,60000 60000,20000 60000,20000 20000))', 5));

クエリでは、SQL WHERE 句で空間列を使用して結果セットを修飾することもできます。空間列が結果セットにある必要はまったくありません。たとえば、次の SQL ステートメントは、機密エリアが危険なサイトから 5 マイル以内にある場合、各機密エリアとその近くの危険廃棄物サイトを取得します。ST_Buffer() 関数は、危険な場所ごとに半径 5 マイルを表す円形の多角形を生成します。ST_Buffer() 関数によって返される ST_Polygon ジオメトリは、ST_Overlaps() 関数の引数になり、sensitive_areas テーブルのゾーン ST_Polygon が ST_Buffer() 関数によって生成された ST_Polygon とオーバーラップする場合、t (TRUE) を返します。

SELECT sa.name sensitive_area, hs.name hazardous_site
   FROM sensitive_areas sa, hazardous_sites hs
   WHERE ST_Overlaps(sa.zone, ST_Buffer(hs.location, 26400));


sensitive_area  Summerhill Elementary School
hazardous_site  Landmark Industrial

sensitive_area  Johnson County Hospital
hazardous_site  Landmark Industrial 
于 2010-03-26T00:12:04.150 に答える