SQL 機能の一部として空間検索を実行することができます。空間検索は、SQL ダイアログで選択されたオプションによって暗黙的に実行することも、作成したクエリーの SPATIAL キーワードを使用して明示的に実行することもできます。
暗黙的な空間検索は、SQL ダイアログ内で完全に定義され、以下に説明するように、任意の 2 つのネットワーク レイヤー間、またはネットワーク レイヤーと GIS レイヤーの間で実行できます。
空間レイヤー検索にフィールドを含めるには、[フィールド]ボックスでフィールドを選択するか、以下に示す構文を使用して編集ボックスに直接入力します。フィールド名は、gislayer.<field_name> 構文を使用してクエリーに含められます。
このタイプのクエリーの例を以下に示します。これは、「SQL の例: 重要な管」ヘルプ トピックに記載されています。
クエリーで空間検索選択オプションとオブジェクト タイプ選択オプションの両方が定義されている場合、空間検索が最初に実行されます。次に、空間検索の結果に対して、オブジェクト タイプ基準を使用したメイン クエリーが実行されます。例:
diameter > 200
このクエリーでは、次の処理が行われます。
diameter > 200
GIS データを使用して、道路から 2 メートル以内にある、直径が 200 を超えるすべての管を検索します。
z < 100 AND gislayer.area > 150
面積が 150 を超えるポリゴン内にある、高度が 100 未満のすべてのノードを選択します。
空間検索に SPATIAL キーワードを使用する主な利点は、SQL ブロック内で空間検索を使用する行と使用しない行を混在させられることです。
SPATIAL キーワードを使用して明示的な空間検索を実行するには、検索の対象となるクエリーのオブジェクト テーブルを定義する必要もあります。これは、単純な SELECT 句を使用して行います。これらは次の順序で記述します。
クエリーで空間検索を使用するための構文は、次のとおりです。
SPATIAL <geometry type> <layer type> <layer name>; SELECT FROM <object type>;
SPATIAL <geometry type> <layer type> <layer name> <distance>; SELECT FROM <object type>;
| SPATIAL 構文関数 | 構文オプション | 説明 | |
|---|---|---|---|
| ジオメトリ タイプ | 交差 | レイヤーのラインまたはポリゴン面積と交差するネットワーク オブジェクトを検索します。 | |
| 内側 | レイヤー ポリゴンの内側にあるネットワーク オブジェクトを検索します。 | ||
| 中身 | ポリゴンの内側にレイヤー オブジェクトがあるネットワーク ポリゴンを検索します。 | ||
| 距離 | レイヤーのポイント、ライン、またはポリゴンの検索距離内にあるネットワーク オブジェクトを検索します。 | ||
| 近接点 | 指定した距離内にある最も近いネットワーク オブジェクトを検索します。指定した距離内に複数のオブジェクトがある場合は、最初に見つかったものが結果として返されます。 | ||
| レイヤー タイプ | ネットワーク | 現在のネットワークのオブジェクト レイヤー | |
| GIS | ジオプランでネットワークの背後に表示される GIS 背景レイヤー | ||
| 画層名 | GIS レイヤーの場合は引用符で囲まれた文字列、ネットワーク オブジェクトの場合はテーブル名(引用符で囲みません。スペースなしの単一の単語の場合は任意で[ ]で囲み、そうでない場合は必ず[ ]で囲みます)にする必要があります。 | ||
| 距離 |
重要: [距離] の値は、 [距離] または [最近] ジオメトリ タイプを使用している場合にのみ必要であり、使用されます。
ヒント: [距離] フィールドの入力値には、数値定数またはスカラー変数を指定できます。
|
||
SPATIAL Distance Network Reservoir 30.5; SELECT FROM [All Nodes]
このクエリーは、まず、ネットワーク ポリゴン内にあるすべてのノードを選択してから、貯水池オブジェクトの 30.5 距離単位内にあるすべてのノードを選択します。
次の構文を使用して、クエリーのセグメントから空間検索を除外することもできます。
SPATIAL NONE;
SPATIAL NONE がクエリーにブロックとして追加されると、クエリーの残りの部分では有効だった SPATIAL 句(暗黙的または明示的を問わない)がキャンセルまたは無効化されます。つまり、SQL 句は通常の意味を持ち、空間検索を参照することなく、ネットワーク内のデータに対して作用します。必要に応じて、クエリーで SPATIAL NONE ブロックの後に SPATIAL 句を追加して、新しい空間検索句を導入することができます。
こうすると、SQL ブロック内で空間検索を使用する行と使用しない行を混在させることができるため、柔軟性が向上します。
次の表は、各検索タイプの互換性のあるジオメトリの組み合わせの詳細を示しています。
|
空間検索タイプ |
検索タイプの説明 |
互換性のあるジオメトリの組み合わせ |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
交差 |
レイヤーのラインまたはポリゴン面積と交差するネットワーク オブジェクトを検索します。 |
|
||||||||
|
内側 |
レイヤー ポリゴンの内側にあるネットワーク オブジェクトを検索します。 |
|
||||||||
|
中身 |
ポリゴンの内側にレイヤー オブジェクトがあるネットワーク ポリゴンを検索します。 |
|
||||||||
|
距離 |
レイヤーのポイント、ライン、またはポリゴンの検索距離内にあるネットワーク オブジェクトを検索します。 |
|
||||||||
|
近接点 |
指定した距離内にある最も近いネットワーク オブジェクトを検索します。指定した距離内に複数のオブジェクトがある場合は、最初に見つかったものが結果として返されます。 |
|