はじめに
前回の記事ではクエリ レイヤーを使用するための前提となる情報としてジオデータベースとデータベースの違いなど前提となる情報についてご紹介しました。今回は実際にクエリ レイヤーを使用する方法や機能についてご紹介します。
クエリ レイヤーの追加
クエリ レイヤーを ArcGIS Pro や ArcMap に追加するにはデータベースコネクション下に表示されている空間テーブルをドラッグ&ドロップしてマップに追加する方法、またはメニューから[データの追加]→[クエリ レイヤー]を選択する方法、[クエリ レイヤーの作成]ジオプロセシングツールを使用する方法の3種類が存在します。ArcGIS Pro でも ArcMap でも基本的な操作は変わりありませんが、本記事では ArcGIS Pro を使用しています。
ドラッグ&ドロップを使用してクエリ レイヤーを追加する方法は、空間テーブルをそのままの状態でマップに追加する場合に使用します。この方法では一意識別子および空間参照の設定のみを行い、その他の設定は行いません。

空間テーブルに対して設定を行ってマップに追加したい場合は、メニューの [クエリ レイヤーの作成] または [クエリ レイヤーの作成] ジオプロセシングツールを使用します。これらの方法では [クエリ] パラメーターが存在し、そこに SQL の SELECT 文を直接入力することができるため、フィルター定義や使用するフィールドの制限を行うなど用途に応じて空間テーブルの設定を行うことが可能です。空間列を持つテーブルに対して空間列を返さないクエリを設定した場合、マップにはレイヤーではなくテーブルが追加されます。

マップに追加したクエリ レイヤーは、ジオデータベースのフィーチャクラスと同様に表示や解析に使用することができます。だたし、ArcGIS Desktop 製品からクエリ レイヤーに対して編集を行うことはできません。

クエリ レイヤーを使用する際の留意事項
クエリ レイヤーとして使用できる空間テーブルにはいくつかの制限事項が存在します。
ジオメトリを格納する空間列で使用する DBMS の空間データ型は 1 つのテーブルにポイントやポリラインなど複数のジオメトリタイプや、WGS1984 や Web メルカトルなど複数の座標系を持つジオメトリを混在させることをサポートしている場合がありますが、ArcGIS では 1 つのテーブルでサポートされるジオメトリタイプと座標系の組み合わせは 1 つだけです。
また、ジオデータベースのフィーチャクラスやテーブルに必ず一意の値を格納する OBJECTID フィールドが存在するように、クエリ レイヤーにも非NULLの一意な値を格納するフィールドが必要とされます。このフィールドが存在しない場合には複数の列を組み合わせることで一となるフィールドの組み合わせを定義する必要があります。
上記以外にも制限事項は存在し、それらは基本的にジオデータベースのフィーチャクラスやテーブルと同様になりますので、クエリ レイヤーの作成時の SQL 文でこれらの制限事項を満たす条件を設定する必要があります。
クエリ レイヤーの共有
クエリ レイヤーで取得したデータは、ArcGIS Pro のプロジェクトまたは ArcMap の MXD ファイルに保存されます。そのため、クエリ レイヤーの共有にはクエリ レイヤーの代わりにデータベースに作成されるビューを使用するか、ArcGIS Server のを公開して Web に 共有する方法を使用します。

クエリ レイヤーをサービスとして共有し、かつサービスのケーパビリティで [Feature Access] が有効となっている場合、Web からサービスを経由して既存のフィーチャの編集が行えることが特徴として挙げられます。


最後に
現在は DBMS でも空間データ型がサポートされており、OGC の Simple Features SQL だけでなく、そこからさらに拡張された空間的な演算や集約等を行うことも可能となっております。一方で視覚化については DBMS には存在しないため、より詳細に空間データを分析を行うことや、地図やチャートなどで可視化することができ、さらに結果のデータを Web で共有することが可能になります。
参考情報
クエリ レイヤー
フィーチャ サービスを公開するためのデータの準備