データセットをレイヤーとしてマップまたはシーンに追加する際、データセットにフィーチャのサブセットだけを操作または描画したい場合があります。 次のようなケースがあります。
- 世界の各都市のデータセットから、100 万人以上の人口が存在する都市だけを操作する。
- 水文解析ラインのデータセットから、永続的に流れている小川だけを操作する。
- パーセルのデータセットから、商用区域のパーセルだけを操作する。
定義クエリーを使用して、レイヤーがデータセットから取得するフィーチャを制限するフィルターを定義できます。 したがって、定義クエリーは描画だけでなく、レイヤーの属性テーブルに表示され、ジオプロセシング ツールが選択、ラベル付け、特定、および処理できるフィーチャにも影響を与えます。

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