属性クエリ タスク
属性クエリ タスクは、データの属性に基づいてマップ上の特定のデータを選択または表示するのに役立ちます。属性クエリ タスクは、1 つのマップレイヤ上で 1 つのクエリを作成します。ただし、クエリには複合条件を使用することができます。たとえば、都市レイヤに対して、ユーザが入力した値よりも人口が多く、かつユーザが入力した名前で始まる都市を選択するためのクエリを定義できます。
また、属性クエリ タスクはリレートおよびスタンドアロン テーブルもサポートしています。リレートでは、2 つのテーブル間の関係のみが定義され、関連付けられたデータはそれぞれのテーブルに付加されません。多くの場合、リレートによってスタンドアロン テーブルが示されます。スタンドアロン テーブルにはジオメトリはありませんが、大抵は重要な属性情報が含まれています。たとえば、都市パーセルとパーセル所有者のスタンドアロン テーブル間のリレートを含んだマップ サービスを公開した場合、属性クエリ タスクを使用して、クエリ結果のパーセルの所有者と場所を表示することもできます。
属性クエリ タスクを設定する際には、ユーザがクエリを簡単に作成できるような、わかりやすい形式を作成します。そうすれば、アプリケーションのユーザがデータセットの詳細を知る必要がなくなり、データを選択するために SQL(Structured Query Language)ステートメントを作成する必要もなくなります。
たとえば、ユーザが都道府県名と人口数を入力したら、入力された都道府県のうち、人口数が入力された値以上である市区町村を選択できるようにしたいとします。この選択のための SQL 式は、「SELECT * FROM counties.sdc.counties WHERE: "STATE_NAME" = 'Idaho' AND "AVE_HH_SZ" > 3.0」のようになります。この Web アプリケーションのユーザは、データのフィールド名や SQL ステートメントの書き方を知らない可能性があります。そこで、属性クエリ タスクを使用して、「<ドロップダウン リストから選択可能な> 都道府県の市区町村を選択したい。この市区町村の平均世帯数は <テキストボックスに入力した数値> 以上である」といったテキストからなる、わかりやすい形式を作成することができます。
アプリケーションに属性クエリ タスクを追加した後、[構成] ボタンをクリックして、タスクの構成設定を表示します。このダイアログ ボックスを使ってクエリを組み立て、ユーザにタスクとして表示されるテキストを指定します。また、結果の表示方法を調整することもできます。
タスクに表示されるテキストの選択
[一般] タブでは、ユーザがタスクを実行するときに表示されるテキストを調整することができます。次のテキストの変更が可能です。
- タスクの名前。この名前は Web マッピング アプリケーションのトップ バーに表示されます。
- タスクを実行するためにユーザがクリックするボタンの文字列。
クエリの組み立て
[設定] タブを使用して、クエリを組み立てます。クエリの対象となるマップ サービスとレイヤを選択した後、[追加] ボタンをクリックして、クエリに条件式を追加します。複数の条件式を追加して、複合クエリを作成することもできます。SQL を使用するのが初めてか、少し復習しておきたいという場合は、ArcGIS Desktop ヘルプの「クエリ式の構築」をご参照ください。
この例は、ユーザが入力した値よりも人口が多い市区町村を検索するクエリ条件を示しています。
属性クエリ タスクをセット アップする際には、次の点に注意してください。
- デフォルトでは、属性クエリ タスクは結果の数を 50 に制限します。この値は、Manager の [タスク構成] ダイアログ ボックスの [結果] タブで変更できます。
-
ArcGIS Server のマップ サービスから返されるクエリの結果は、デフォルトでは 1,000 個のレコードに制限されています。これらのシンボルは、[サービス プロパティ] ダイアログ ボックスで変更することができます。タスクを構成する際には、レコード数の制限を念頭に置くことが大切です。[サンプル値の取得] ボタンをクリックしたときに最初の 1,000 個のレコードだけがスキャン対象となり一意な値が検索されるためです。
レコード数の制限をかなり高い値にリセットすると、パフォーマンスが低下することがあります。たとえば、2,000 を超えるレコードを返すクエリを実行するには、システムの TEMP ディレクトリ内にテンポラリ ワークスペースを作成して結果レコードを管理する必要が生じるため、ソフトウェアの作業負荷が増えます。
- タスクを複数のクエリ式で構成すると、式は「AND」演算子を使って結合されます。Manager では、「OR」演算子はサポートされていません。
- 条件式で「LIKE」演算子を使用すると、マッチングする文字列を入力するときにワイルドカード文字を使用できます。%(パーセント記号)は、その位置にあるすべてとマッチすることを意味します(1 文字、100 文字、0 文字など)。_(アンダスコア)は 1 文字とマッチします。たとえば、Catherine と Katherine の両方をマッチさせるには、「_atherine」と入力することができます。
- Manager では実行できないクエリ文字列のカスタマイズが必要な場合は、Visual Studio などの IDE でアプリケーションを開いて、タスクを編集することができます。[カスタム WHERE 句] を使用して、クエリの SQL 式を入力することも可能です。
-
日時フィールドの SQL 式を構築するには、データが格納されているデータベースに応じて、追加の書式設定が必要です。
ユーザが日付のクエリを実行するたびに # 記号などの特殊な形式を入力しなくて済むようにしたい場合は、特殊な形式を式の一部に含めるとよいでしょう。この操作を行うには、Visual Studio でタスクを編集し、[カスタム WHERE 句] オプションを選択する必要があります。次の式は、パーソナル ジオデータベース内で {0} と {1} で表される 2 つの日付フィールドに対してクエリを実行します。
mydate >= #{0}# AND mydate <= #{1}#
他のデータベースでは # 記号は要求されませんが、他の特殊な構文が要求されます。式を正しく構成する手順については、「ArcGIS でのクエリ条件式作成のための SQL リファレンス」トピックの「日付」セクションをご参照ください。
- レイヤの一覧に特定のレイヤが表示されない場合、そのレイヤに対してクエリを実行できないのが原因です。たとえば、ラスタ レイヤによっては属性が設定されていないのが原因で、一覧に表示されない場合もあります。また、マップ サービスによってはクエリをサポートしていないものもあります(例: WMS サービス)。
- サンプル アプリケーションを作成して、ArcGIS Server Manager でクエリを作成する方法に慣れておくとよいでしょう。アプリケーションを導入する前に、既知の値を使ってクエリをテストし、正しい結果が返されることを確認してください。
結果の表示方法の選択
[結果] タブを使用して、タスク結果の表示方法を設定します。次の点を知っておくと役立ちます。
- デフォルトの設定では、検索結果はレイヤごとにグループ化され、結果として返されたレコードの属性が表示されますが、この設定を無効にすることができます。さまざまな設定をテストしてみて、最も適切な表示がどれか判断してください。
- マップチップを有効にすると、結果フィーチャをクリックしたときに、情報を提供するポップアップ ウィンドウが表示されます。また、結果フィーチャは、マウス ポインタを重ねたときにハイライト表示されます。
- [カスタム書式設定] を選択することにより、[結果] パネルとマップチップでの結果の表示方法を変更することができます。その際には、結果フィーチャの色、表示する情報、テキスト形式を変更するための追加のタブが表示されます。