データセットをレイヤーとしてマップまたはシーンに追加する際、データセットにフィーチャのサブセットだけを操作または描画したい場合があります。 次のようなケースがあります。
- 世界の各都市のデータセットから、100 万人以上の人口が存在する都市だけを操作する。
- 水文解析ラインのデータセットから、永続的に流れている小川だけを操作する。
- パーセルのデータセットから、商用区域のパーセルだけを操作する。
定義クエリを使用して、レイヤーがデータセットから取得するフィーチャをフィルターすることで、レイヤー内で操作するフィーチャのサブセットを定義できます。 したがって、定義クエリは描画だけでなく、レイヤーの属性テーブルに表示され、ジオプロセシング ツールが選択、ラベル付け、特定、および処理できるフィーチャにも影響を与えます。
描画対象のフィーチャは制限するが、引き続きすべてのフィーチャを検索および処理の対象にしたい場合は、表示フィルターの使用を検討してください。 定義クエリと表示フィルターはレイヤー上で同時に使用できますが、定義クエリはレイヤーで扱うことのできるフィーチャを制限するのに対し、表示フィルターは表示されるフィーチャのみを制限します。
定義クエリは 1 つ以上の項目で構成されます。 これらは、SQL 構文で作成されており、クエリ ビルダーを使用して構築されています。 項目とクエリを操作する方法やファイルからクエリを読み込んで保存する方法については、「検索条件設定の概要」をご参照ください。
レイヤーには複数の定義クエリを関連付けることができますが、一度にアクティブにできる定義クエリは 1 つだけです。 レイヤーに複数の定義クエリが定義されている場合でも、すべての定義クエリを非アクティブにすることで、定義クエリを適用しないようにすることもできます。
注意:
このトピックでは、フィーチャ レイヤーにおける定義クエリについて説明しますが、定義クエリはスタンドアロン テーブルでも同様に使用できます。
レイヤーに対する定義クエリの作成
レイヤーに対して定義クエリを作成するには、次の手順を実行します。
- レイヤーが [コンテンツ] ウィンドウで選択されていることを確認します。
- [フィーチャ レイヤー] タブ セットで、[データ] タブをクリックします。
- [データ] タブにある [定義クエリ] グループで、[定義クエリの構築] ボタン をクリックして、[レイヤー プロパティ] ダイアログ ボックスと [定義クエリ] タブを開きます。
- [新しい定義クエリ] ボタン、またはドロップダウン メニューをクリックして、項目モード、SQL モード、またはクエリ式ファイル (.exp) で新しいクエリを作成することもできます。
- クエリ ビルダーで、項目を構築するメニューから値を選択します。 これらのメニューと値は、基になるソース データ固有のものです。
- 必要に応じて、[項目の追加] をクリックして、別の項目をクエリに追加します。 必要に応じて、新しい項目のメニューから値を選択します。 必要に応じて、上記の手順を繰り返して項目を追加します。
- 必要に応じて、[フィールド設定] をクリックして、フィールド値の表示を変更します。 これらの設定は、すべての項目に適用されます。
- デフォルトでは、[フィールドのエイリアスを表示] が選択されています。 項目のフィールドのドロップダウン メニューにテーブルの名前を含めるには、[フィールド名を表示] をクリックします。 これは、レイヤーが共通のフィールド名を共有する結合に参加している場合に特に役立ちます。
- ドロップダウン メニューのフィールドの名前をアルファベット順に表示するには、[昇順で並べ替え] または [降順で並べ替え] をクリックします。 [元の順序] をクリックすると、フィールドが元の順序に戻ります。
- デフォルトでは、[表示フィールドを表示] が選択されています。 項目のフィールドのドロップダウン メニューに非表示のフィールドを表示するには、[すべてのフィールドを表示] をクリックします。
- デフォルトで、[ドメインとサブタイプのみを表示] が選択されています。 フィールドの個別値のドロップダウン メニューに無効な値や不正な値を含めるには、[その他すべての値を表示] をクリックします。
- 必要に応じて、クエリ名にポインターを合わせてクリックして、名前を変更します。
- 必要に応じて、[SQL 式の確認] をクリックして SQL 式を確認します。
- クエリを検証して完成させるには、検索条件設定で [適用] をクリックします。
- レイヤー上に定義クエリが 1 つしか存在しない場合、その定義クエリがアクティブ化され、すぐに適用されます。 レイヤー上に他の定義クエリが存在する場合は、[アクティブとして設定] をクリックして、定義クエリをレイヤーに適用します。
アクティブな定義クエリの設定
レイヤーまたはテーブルに対して複数の定義クエリを定義し、これらを切り替えることができます。 常に 1 つのだけをアクティブにするか、アクティブなクエリが存在しないようにすることもできます。 定義クエリは、レイヤーのプロパティとして格納されます。
アクティブな定義クエリを切り替えるには、次の手順を実行します。
- レイヤーが [コンテンツ] ウィンドウで選択されていることを確認します。
- [フィーチャ レイヤー] タブ セットで、[データ] タブをクリックします。
- [データ] タブにある [定義クエリ] グループで、[定義クエリ] メニューからクエリを選択して、そのクエリをレイヤーに適用します。
- また、[レイヤー プロパティ] ダイアログ ボックスの [定義クエリ] からアクティブなクエリを設定することもできます。
- [アクティブとして設定] をクリックし、[適用] をクリックして、そのクエリをレイヤーに適用します。 それ以外のクエリはすべて非アクティブになります。 アクティブなクエリの名前が [プロパティ] ダイアログ ボックスの下部に表示されます。 リストに多数のクエリが含まれているため、アクティブなクエリを確認できない場合は、[アクティブな定義クエリを表示] をクリックして、そのクエリが見つかるまでスクロールします。
- [アクティブなクエリを解除] をクリックし、[適用] をクリックして、どのクエリもレイヤーまたはテーブルに適用されていない状態にします。 すべてのクエリがレイヤーまたはテーブルで維持されますが、現在どのクエリも適用されていません。
ヒント:
[コンテンツ] ウィンドウでレイヤーのリストをフィルターして、アクティブな定義クエリを持つレイヤーのみを表示できます。
既存のクエリの変更
[コンテンツ] ウィンドウでレイヤーを選択したら、[フィーチャ レイヤー] タブ セットの [データ] タブの [定義クエリ] グループで [定義クエリの構築] ボタン をクリックして [レイヤー プロパティ] ダイアログ ボックスの [定義クエリ] タブを開きます。 定義クエリを変更するには、クエリにポインターを合わせて、次のいずれかの操作を実行します。
- 定義クエリ内の項目の変更、定義クエリへの項目の追加、定義クエリからの項目の削除を行う場合は、クエリのセルで [編集] をクリックします。
- クエリ内の項目を編集するには、必要に応じて値を調整します。
- クエリから項目を削除するには、[項目の削除] をクリックします。
- クエリに項目を追加するには、[項目の追加] をクリックします。
[適用] をクリックして、変更を定義クエリに適用します。
- 編集モードでない場合に、レイヤーまたはテーブルから定義クエリを削除するには、定義クエリ セルにポインターを合わせ、[定義クエリの削除] をクリックします。
- 定義クエリの名前を変更する場合は、定義クエリの名前をクリックして新しい名前を入力します。
- 編集モードでない場合に、クエリ構文をクエリ式ファイル (.exp) にエクスポートするには、定義クエリ セルにポインターを合わせ、[定義クエリの保存] をクリックします。
- 編集モードでない場合に、現在のクエリをクエリ式ファイル (.exp) 内の別のクエリに置き換えるには、定義クエリ セルにポインターを合わせ、[定義クエリの読み込み] をクリックします。
一度に複数のレイヤーに定義クエリを適用
複数のレイヤーが定義クエリを共通の名前で共有している場合 (クエリの内容がそれぞれ異なる場合でも)、これらのクエリを複数のレイヤーに同時にアクティブにすることができます。 つまり、特定のシナリオに関連する多数のクエリを構築し、一度にこれらのクエリをすべて適用できます。 この後、必要に応じて、別のシナリオに合わせて異なる一連のクエリに切り替えることができます。
共通した名前の定義クエリを同時に複数のレイヤーに適用するには、次の手順を実行します。
- [コンテンツ] ウィンドウで複数のレイヤーまたはテーブルが選択されていることを確認します。
- [フィーチャ レイヤー] タブ セットで、[データ] タブをクリックします。
- [データ] タブにある [定義クエリ] グループで、[定義クエリ] メニューからクエリを選択して、そのクエリをレイヤーに適用します。
選択したすべてのレイヤーに共通した名前の定義クエリだけが表示されます。
定義クエリの作成の自動化
ArcPy 関数を組み合わせることで、Python で定義クエリの作成と操作を自動化できます。 このトピックの詳細 (コード例を含む) については、レイヤー クラスのドキュメントをご参照ください。
[選択から定義クエリを生成 (Generate Definition Query From Selection)] ツールで、フィーチャ レイヤーの選択セットから定義クエリを生成することもできます。
定義クエリを含むレイヤーの共有
レイヤーがフィーチャ レイヤーとして共有されているか、マップ イメージ レイヤー内で共有されている場合は、アクティブな定義クエリだけが保持されて適用されます。 それ以外の非アクティブな定義クエリはすべて削除されます。