本日はデータに対してクエリ式を構築することでフィルターが可能な「定義クエリ」機能をご紹介します!Basic ライセンス レベルで使用できる基本機能ですが、ArcGIS Pro 3.4 で新たに機能改善が行われ、ますます便利になりました。
目次
定義クエリとは
定義クエリとは、フィーチャ レイヤーまたはスタンドアロン テーブルに対してクエリ (式) を定義し、フィルターをかける事で、マップ上の表示データを見やすくしたり、解析をしやすくしたりすることができる基本のデータ管理機能です。表示フィルターと異なり、表示上だけでなく、データに対しての制限が可能なため、クエリ式は属性テーブルやラベルにも適用され、またジオプロセシング ツールで解析する際にもフィルターされたデータだけを対象に処理を実行することができます。
本ブログでは、主にフィーチャ レイヤーを使った定義クエリ機能をご紹介します。
定義クエリの設定方法
定義クエリを設定する主なフローは、レイヤー プロパティから直接手動で設定する方法と、ジオプロセシング ツールを使用する方法の 2 種類があります。
レイヤー プロパティから手動で設定
基本の設定 (項目モード)
- クエリ式を構築するデータをマップに追加します。下図は全国の国勢調査の市区町村を都道府県ごとに色分けしたポリゴンです。市区町村のフィーチャは 1903 あります。
- [コンテンツ] ウィンドウで定義クエリを設定するレイヤーを右クリック → [プロパティ] をクリック → [定義クエリ] タブをクリック → [新しい定義クエリ] → [新しいフィルター設定の作成] をクリックし、クエリ式を構築します。
以下の動画は、全国の国勢調査市区町村ポリゴンから、人口が 20 万人以上の市区町村だけをフィルターするクエリ設定の手順を示しています。クエリ実行後、158 の市区町村フィーチャにフィルターされていることがわかります。
同じクエリ内で [項目の追加] をクリックして、クエリを複数追加し、組み合わせる事もできます。下図は、上述の式に加え、神奈川県のみ、かつ人口 20 万人以上の市区町村をフィルターするクエリ設定とその結果のマップです。結果、22 の市フィーチャがフィルターされています。
応用の設定 (SQL モード)
クエリ式を構築する際、[SQL] トグルを切り替えると、SQL 構文を構築できるテキスト ボックスが表示されます。下図は、上述の項目モードから SQL モードに切り替えたものです。自身で構文を自由にカスタマイズすることもできます。
任意のフィーチャを選択し、ジオプロセシング ツールで設定
こちらは ArcGIS Pro 3.4 の新機能で、[選択から定義クエリを生成] ジオプロセシング ツールを使用する方法です。このツールを使用するメリットは、手動で対話的に選択したフィーチャ レイヤーまたはスタンドアロン テーブルに対してクエリを作成できることです。
- 任意のフィーチャを選択します。選択は、[選択] ツールを使用してマップ上で対話的に選択しても、[属性条件で選択] や [空間条件で選択] ツールを使って選択しても構いません。
- [コンテンツ] ウィンドウでレイヤーを右クリック → [選択] → [選択から定義クエリを生成] をクリックすると、ツールが起動するので、パラメーターを設定して実行します。
以下の動画では、マップ上で対話的に選択したイノシシの目撃情報ポイントを [選択から定義クエリを生成] ツールを使用し、クエリを設定する手順を示しています。
(出典: 柏崎市 イノシシ目撃情報 令和2(2020)年度 CC BY 4.0 / データに対しシンボルを適用)
ツールを実行後に、[プロパティ] ダイアログのクエリの設定を確認すると、選択した OBJECTID でクエリ式が構築されていることを確認できます。
こちらのツールは、米国Esri社が管理するユーザーのコミュニティ サイト「Esri Community」にて、ユーザーが提案することが出来る「ArcGIS Pro Ideas」スレッドに投稿され、採用されて実装された機能です (実際のページ)。「こんな機能が欲しい」というご要望があれば、Ideas に投稿すれば採用されるかもしれません。アイデアをお持ちの方は投稿してみてください。 投稿方法: ArcGIS Ideas への投稿方法 (Esri 製品の機能改善アイデア)
定義クエリの切り替え操作
設定したレイヤーのクエリはリボンの [データ] タブから切り替えて操作できます。レイヤー プロパティ ダイアログをいちいち起動せずに済むので、作業が効率よく行えます。
以下の動画は、不動産業界などでよく使用される東京 23 区を 4 つのエリア (城東、城西、城南、城北) に分けたカテゴリで作成したクエリを、タブ上で切り替える操作を示しています。
定義クエリの管理と共有
これらの方法で作成したクエリは [レイヤー プロパティ] ダイアログの [定義クエリ] タブからいつでも編集、削除することができます。保存、読み込みボタンで、作成したクエリを .exp 形式のファイルにエクスポートおよびインポートすることができます。
定義クエリの効果の範囲
作成した定義クエリが、その後の作業操作でどのような振舞いをするのかをいくつかまとめました。定義クエリの振舞いを正しく理解することで、効率的な作業を行うことができます。
データの削除と追加
定義クエリはレイヤーに対して適用されるものなので、データ自体には保存されません。そのため、定義クエリを適用したレイヤーをマップから削除してしまうと、次回同じデータをマップに追加した際には定義クエリは空になります。定義クエリを残したままマップからレイヤーを削除したい場合は、予め定義クエリを設定したレイヤーをレイヤー ファイル (.lyrx) またはレイヤー パッケージ (.lpkx)として保存するか、定義クエリを .exp クエリ ファイルとして保存し、改めてデータをマップに追加した時に再適用します。
解析
定義クエリを有効にした状態で解析を行うと、クエリでフィルターされたデータに対してのみ処理が実行されます。そのため、必要なデータに対してのみ処理が行われ、処理パフォーマンスを向上することができます。逆に解析時にすべてのデータに対して処理を行いたい場合は、予め定義クエリを非アクティブに設定することを忘れないようにしましょう。
データのエクスポート
定義クエリを設定した状態で、データをエクスポートすると、フィルターされたデータだけがエクスポートされ、クエリは引き継がれません。
共有
定義クエリが有効なデータを Web レイヤーとして ArcGIS Online に共有する際、1 つのアクティブなクエリのみ適用され、その他の非アクティブなクエリは削除され、共有されません。
さいごに
GIS で膨大なデータを操作する際は、定義クエリでのフィルターが大変便利です。ぜひ日々の作業でご活用ください。