Skip to main content

定義クエリーによるフィーチャのフィルター

データセットをレイヤーとしてマップまたはシーンに追加する際、データセットにフィーチャのサブセットだけを操作または描画したい場合があります。 次のようなケースがあります。

  • 世界の各都市のデータセットから、100 万人以上の人口が存在する都市だけを操作する。

  • 水文解析ラインのデータセットから、永続的に流れている小川だけを操作する。

  • パーセルのデータセットから、商用区域のパーセルだけを操作する。

定義クエリーを使用して、レイヤーがデータセットから取得するフィーチャを制限するフィルターを定義できます。 したがって、定義クエリーは、描画だけでなく、レイヤーの属性テーブルに表示され、ジオプロセシング ツールが選択、ラベル付け、特定、および処理できるフィーチャにも影響を与えます。

定義クエリーの例。

この定義クエリーの例では、人口が 100,000 人未満である、または州都ではない、中国の都市フィーチャを除外します。

描画対象のフィーチャは制限するが、引き続きすべてのフィーチャを検索および処理の対象にしたい場合は、表示フィルターの使用を検討してください。 定義クエリーと表示フィルターはレイヤー上で同時に使用できますが、定義クエリーはレイヤーで扱うことのできるフィーチャを制限するのに対し、表示フィルターは表示されるフィーチャのみを制限します。

定義クエリーは 1 つ以上の項目で構成されます。 項目には、属性項目と空間項目の 2 種類があります。 すべての項目は、SQL 構文で作成されており、クエリー ビルダーを使用して構築されています。 項目とクエリーを操作する方法やファイルからクエリーを読み込んで保存する方法については、「検索条件設定の概要」をご参照ください。

レイヤーには複数の定義クエリーを関連付けることができますが、一度にアクティブにできる定義クエリーは 1 つだけです。 レイヤーに複数の定義クエリーが定義されている場合でも、すべての定義クエリーをオフにすることができます。つまり、クエリーは実際には適用されません。

注意:

このトピックでは、フィーチャ レイヤーにおける定義クエリーについて説明しますが、定義クエリーはスタンドアロン テーブルでも同様に使用できます。

レイヤーに対する定義クエリーの作成

レイヤーに対して定義クエリーを作成するには、次の手順を実行します。

  1. レイヤーが コンテンツ ウィンドウで選択されていることを確認します。

  2. フィーチャ レイヤー タブ セットで、データ タブをクリックします。

  3. データ タブにある 定義クエリー グループで、定義クエリーの構築 ボタン をクリックして、レイヤー プロパティ ダイアログ ボックスと 定義クエリー タブを開きます。

  4. 新しい定義クエリー ボタン、またはドロップダウン メニューをクリックして、デザイナー モード (項目を使用)、エディター モード (SQL コードを使用)、またはクエリー式ファイル (.exp) でクエリーを作成できます。

  5. クエリー ビルダーで、項目を構築するメニューから値を選択します。 これらのメニューと値は、基になるソース データ固有のものです。

  6. 必要に応じて、項目の追加 をクリックして、別の属性項目をクエリーに追加します。 必要に応じて、新しい項目のメニューから値を選択します。 上記の手順を繰り返して属性項目を追加するか、ドロップダウン メニューをクリックして空間項目を追加します。

  7. 必要に応じて、設定 をクリックして、クエリーまたはフィールド値の表示を変更します。 該当する場合、設定はすべてのクエリーに適用されます。

    • ドロップダウン メニューのフィールドの名前をアルファベット順に表示するには、フィールドを昇順に並べ替え をクリックします。 フィールドを降順に並べ替え を使用すると、フィールド名が逆アルファベット順に並べ替えられます。 フィールドを元の順序に並べ替え をクリックすると、フィールドがデフォルトの順序に戻ります。

    • デフォルトでは、フィールドのエイリアスを表示 が選択されています。 項目のフィールドのドロップダウン メニューにテーブルの名前を含めるには、フィールド名を表示 をクリックします。 これは、レイヤーが共通のフィールド名を共有する結合に参加している場合に特に役立ちます。

    • デフォルトでは、表示フィールドを表示 が選択されています。 項目のフィールドのドロップダウン メニューに非表示のフィールドを表示するには、すべてのフィールドを表示 をクリックします。

    • SQL オートコンプリート はデフォルトで有効になっているエディター モード設定で、SQL コードの作成中に提案を行います。 SQL オートコンプリート機能を無効にするには、この設定をクリックします。

    • デフォルトで、ドメインとサブタイプのみを表示 が選択されています。 フィールドの個別値のドロップダウン メニューに無効な値や不正な値を含めるには、その他すべての値を表示 をクリックします。

    • すべてのクエリーをクエリー名でアルファベット順に整理するには、クエリーを昇順に並べ替え をクリックします。逆アルファベット順にクエリーを整理するには、クエリーを降順に並べ替え をクリックします。

    • クエリーが選択されている場合は、選択したクエリーを複製 をクリックして、そのクエリーのコピーを作成します。

  8. 必要に応じて、クエリー名にポインターを合わせてクリックして、名前を変更します。

  9. 必要に応じて、SQL 式の確認 をクリックして SQL 式を確認します。

  10. クエリーを検証して完成させるには、検索条件設定で 適用 をクリックします。

  11. レイヤー上に定義クエリーが 1 つしか存在しない場合、その定義クエリーがアクティブ化され、すぐに適用されます。 レイヤー上に他の定義クエリーが存在する場合は、アクティブとして設定 をクリックして、定義クエリーをレイヤーに適用します。

空間項目を定義クエリーに追加

1 つ以上の項目を使用した定義クエリーの作成に加えて、定義クエリーには空間項目を含めることができます。 フィールドまたは値の範囲を指定することでデータセットから取得したフィーチャをフィルターする通常の項目とは異なり、空間項目はレイヤーまたは空間範囲のジオメトリーを使用します。

定義クエリーに含めることができる空間項目は 1 つだけです。

注意:

空間項目は、フィーチャ レイヤーではサポートされますが、他の特定のレイヤー タイプではサポートされません。 レイヤー タイプのドキュメントを確認して、そのレイヤー タイプが空間項目をサポートしているかどうかを判断してください。

空間項目を既存の定義クエリーに追加するには、次の手順を実行します。

  1. 必要に応じて、コンテンツ ウィンドウでレイヤーを右クリックし、プロパティ をクリックして レイヤー プロパティ ダイアログ ボックスを開きます。

  2. 定義クエリー タブをクリックし、編集 をクリックして既存のクエリーを変更するか、上記ワークフローの手順 1 ~ 6 に従って新しい定義クエリーを作成します。

  3. 項目の追加 ドロップダウン メニューをクリックし、空間項目の追加 をクリックします。

    空間項目ジオメトリー ダイアログ ボックスが表示されます。

  4. 空間項目ジオメトリー ダイアログ ボックスで、次のいずれかを選択します:

    • レイヤーの選択 - アクティブなマップ内のレイヤーのジオメトリーを使用します。 グラフィックス レイヤーとマルチパッチ レイヤーは選択できません。 レイヤー内のすべてのフィーチャ、選択したフィーチャのみ、または表示されているフィーチャのみのジオメトリーを使用することができます。 ジオメトリーの生成に使用されるレイヤーが編集された場合またはマップから削除された場合は、空間項目ジオメトリーは影響を受けません。

    • カスタム範囲の選択 - 次のいずれかのソースからカスタム範囲を使用します:

      • 現在の表示範囲

      • すべてのレイヤーのデータの範囲

      • レイヤーのすべてのフィーチャまたはエレメントの範囲

      • 選択されたすべてのフィーチャまたはエレメントの範囲

      表示単位を変更して、範囲をカスタマイズすることもできます。

  5. リストでレイヤー オプションまたは範囲オプションを選択して、空間項目のジオメトリーを生成します。 ジオメトリーのプレビューが表示されます。

  6. OK をクリックします。

    空間項目がクエリーに追加されます。 エディター モードとデザイナー モードで、空間項目は、属性項目式の下に表示されます。 AND 演算子は、空間項目を式の残りの部分に付加します。

    注意:

    Shape フィールド名と 交差する 演算子は、空間項目の必須のコンポーネントです。 これらの値は変更できません。

アクティブな定義クエリーの設定

レイヤーまたはテーブルに対して複数の定義クエリーを定義し、これらを切り替えることができます。 常に 1 つのだけをアクティブにするか、アクティブなクエリーが存在しないようにすることもできます。 定義クエリーは、レイヤーのプロパティとして格納されます。

アクティブな定義クエリーを切り替えるには、次の手順を実行します:

  1. レイヤーが コンテンツ ウィンドウで選択されていることを確認します。

  2. フィーチャ レイヤー タブ セットで、データ タブをクリックします。

  3. データ タブにある 定義クエリー グループで、定義クエリー メニューからクエリーを選択して、そのクエリーをレイヤーに適用します。

  4. また、レイヤー プロパティ ダイアログ ボックスの 定義クエリー からアクティブなクエリーを設定することもできます。

    • アクティブとして設定 をクリックし、適用 をクリックして、そのクエリーをレイヤーに適用します。 それ以外のクエリーはすべて非アクティブになります。 アクティブなクエリーの名前が プロパティ ダイアログ ボックスの下部に表示されます。 リストに多数のクエリーが含まれているため、アクティブなクエリーを確認できない場合は、アクティブな定義クエリーを表示 をクリックして、そのクエリーが見つかるまでスクロールします。

    • アクティブなクエリーを解除 をクリックし、適用 をクリックして、どのクエリーもレイヤーまたはテーブルに適用されていない状態にします。 すべてのクエリーがレイヤーまたはテーブルで維持されますが、現在どのクエリーも適用されていません。

ヒント:

コンテンツ ウィンドウでレイヤーのリストをフィルターして、アクティブな定義クエリーを持つレイヤーのみを表示できます。

既存のクエリーの変更

コンテンツ ウィンドウでレイヤーを選択したら、フィーチャ レイヤー タブ セットの データ タブの 定義クエリー グループで 定義クエリーの構築 ボタン をクリックして レイヤー プロパティ ダイアログ ボックスの 定義クエリー タブを開きます。 定義クエリーを変更するには、クエリーにポインターを合わせて、次のいずれかの操作を実行します:

  • 定義クエリー内の項目の変更、定義クエリーへの項目の追加、定義クエリーからの項目の削除を行う場合は、クエリーのセルで 編集 をクリックします。

    • クエリー内の項目を編集するには、必要に応じて値を調整します。

    • クエリーから項目を削除するには、項目の削除 をクリックします。

    • クエリーに項目を追加するには、項目の追加 をクリックします。

    • 既存のクエリーの空間項目ジオメトリーを編集するには、ジオメトリー をクリックします。

    • レイヤーのデータ ソースがエンタープライズ ジオデータベース フィーチャクラスの場合、データベースでフィーチャがフィルターされた後にクライアントで空間項目を適用するには、メニューアイコン をクリックし、属性項目を優先 オプションをオンにします。

    適用 をクリックして、変更を定義クエリーに適用します。

  • エディター モードでない場合に、レイヤーまたはテーブルから定義クエリーを削除するには、定義クエリー セルにポインターを合わせ、定義クエリーの削除 をクリックします。

  • 定義クエリーの名前を変更する場合は、定義クエリーの名前をクリックして新しい名前を入力します。

  • エディター モードでない場合に、クエリー構文をクエリー式ファイル (.exp) にエクスポートするには、定義クエリー セルにポインターを合わせ、定義クエリーの保存 をクリックします。

  • エディター モードでない場合に、現在のクエリーをクエリー式ファイル (.exp) 内の別のクエリーに置き換えるには、定義クエリー セルにポインターを合わせ、定義クエリーの読み込み をクリックします。

  • 編集モードでない場合に、定義クエリーのコピーを作成するには、定義クエリー セルにカーソルを合わせ、選択したクエリーを複製 をクリックします。

一度に複数のレイヤーに定義クエリーを適用

複数のレイヤーが定義クエリーを共通の名前で共有している場合 (クエリーの内容がそれぞれ異なる場合でも)、これらのクエリーを複数のレイヤーに同時にアクティブにすることができます。 つまり、特定のシナリオに関連する多数のクエリーを構築し、一度にこれらのクエリーをすべて適用できます。 この後、必要に応じて、別のシナリオに合わせて異なる一連のクエリーに切り替えることができます。

共通した名前の定義クエリーを同時に複数のレイヤーに適用するには、次の手順を実行します:

  1. コンテンツ ウィンドウで複数のレイヤーまたはテーブルが選択されていることを確認します。

  2. フィーチャ レイヤー タブ セットで、データ タブをクリックします。

  3. データ タブにある 定義クエリー グループで、定義クエリー メニューからクエリーを選択して、そのクエリーをレイヤーに適用します。

    選択したすべてのレイヤーに共通した名前の定義クエリーだけが表示されます。

定義クエリーの作成の自動化

ArcPy 関数を組み合わせることで、Python で定義クエリーの作成と操作を自動化できます。 このトピックの詳細 (コード例を含む) については、レイヤー クラスのドキュメントをご参照ください。

選択から定義クエリーを生成 ツールで、フィーチャ レイヤーの選択セットから定義クエリーを生成することもできます。

定義クエリーを含むレイヤーの共有

レイヤーがフィーチャ レイヤーとして共有されているか、マップ イメージ レイヤー内で共有されている場合は、アクティブな定義クエリーだけが保持されて適用されます。 それ以外の非アクティブな定義クエリーはすべて削除されます。

クエリーに空間項目が含まれている場合は、エラーが返されます。 詳細については、「00428: 定義クエリー空間項目はサーバーでサポートされていません」をご参照ください。