マップにクエリ レイヤーを作成するには、[マップ] タブの [データの追加] ボタン を使用します。
ヒント:
[カタログ] ウィンドウのデータベース接続から、データベース フィーチャクラス、テーブル、ビューをマップにドラッグすると、ArcGIS Pro はそのフィーチャクラス、テーブル、ビューからすべての行とフィールドを選択するクエリ レイヤーを自動的に作成します。これは、データベースにのみ適用されますが、エンタープライズ ジオデータベースには適用されません。
ArcGIS Pro は、レイヤーをマップにドラッグしたときにレイヤーの範囲を計算します。多数のフィーチャを含むテーブルを追加する場合は、範囲の計算に時間がかかる場合があります。データの範囲を知っている場合や、範囲の計算を待たずに独自の空間参照の範囲を使用したい場合は、そちらを選択できます。[範囲の計算] ダイアログ ボックスで該当するボタンをクリックします。[範囲の入力] をクリックした場合、テーブル内のすべてのフィーチャを含む有効な範囲を入力する必要があります。
次に、[新しいクエリ レイヤー] ダイアログ ボックスを使用してクエリ レイヤーを作成する方法をまとめます。
- データベースへの接続
ArcGIS でクエリ レイヤーを作成する最初の手順として、検索するデータベースへの接続を確立しておく必要があります。「ArcGIS Pro でのデータベース コネクション」で説明するように、[カタログ] ウィンドウにデータベース接続を作成できますが、それ以外にも [新しいクエリ レイヤー] ダイアログ ボックスから接続を作成することもできます。
- テーブルを選択します。
データベースへの接続が確立されると、そのデータベースにあるテーブルとビューのリストが [新しいクエリ レイヤー] ダイアログ ボックスに表示されます。テーブルを 1 つ選択すると、そのテーブルの各列が表示されます。
データベースの各列にはそれぞれデータ タイプが設定されています。ArcGIS では、ほとんどの一般的なデータベース タイプを使用できます。ただし、一部のデータベース タイプはサポートされていません。属性列のタイプに「不明」と表示されている場合は、ArcGIS がサポートしていないデータ タイプであることを示します。クエリを指定するときには、データ タイプが不明の列をすべて除外するか、ArcGIS でサポートされているデータ タイプにクエリで変更する必要があります。
詳細については、「ArcGIS でサポートされている DBMS のデータ タイプ」をご参照ください。
- SQL クエリを定義します。
[クエリ] テキスト ボックスに SQL クエリを指定します。
クエリの構築にあたって [クエリ] テキスト ボックスにテーブル全体を追加する場合は、テーブルをダブルクリックするか、[テーブルの一覧] ウィンドウのテーブルを [クエリ] テキスト ボックス内にドラッグします。同様に、テーブル内の特定の列をクエリに追加する場合は、該当する列をダブルクリックするか、[列] ウィンドウから列を [クエリ] テキスト ボックス内にドラッグします。また、特定のクエリを入力することも、外部アプリケーションのクエリをコピーして [クエリ] テキスト ボックスに貼り付けることもできます。
クエリ レイヤーを構築するときは、そのデータベースに固有の SQL 構文を使用する必要があります。一般的な SQL 文は、SELECT * FROM Test.myuser.US_States のようになります。この場合は、US_States テーブルのすべての列が含まれたクエリ レイヤーが作成されます。マップでは、アメリカ合衆国全体が表示されます。
SQL クエリの変数の使用法については、「クエリ レイヤーのパラメーターの定義」をご参照ください。
- SQL ステートメントを検証します。
クエリを作成したら、その整合性をチェックする必要があります。整合チェック中に、ArcGIS はテーブルに返された最初の行に基づいてクエリ レイヤーのプロパティを決定します。
整合チェック中に、ArcGIS はテーブルに返された最初の行に基づいてクエリ レイヤーのプロパティを決定します。
クエリ レイヤーのプロパティは、データベースから ArcGIS に返された行をフィルター処理するために使用されます。たとえば、フィーチャクラスのフィーチャが異なる SRID を使用している場合は、クエリ レイヤーに設定した SRID プロパティを使用して、その SRID に一致しないデータベース テーブルの行をマップで表示しないようにすることができます。
- 一意識別子を指定するか、整合チェック時に ArcGIS で見つかった識別子を使用します。
一意識別子とは、ArcGIS でテーブル内の各行を識別するために使用される 1 つまたは複数のフィールドです。
- 空間列を含むフィーチャクラスまたはビューの場合、以下を定義するか、整合チェック時に ArcGIS が検出したデフォルト値を使用します。
- ジオメトリ タイプ - レイヤーがポイント、マルチポイント、ライン、またはポリゴン フィーチャのどれを格納するかを決定します。
- 空間参照 - レイヤーの座標系とその他の関連空間プロパティを表します。
データベース内のフィーチャに設定された現在の SRID 値に基づいて、空間参照を正確に確定できない場合があります。その場合は、クエリ レイヤーの空間参照は不明になるため、手動で定義する必要があります。クエリ レイヤーの空間参照を定義しても、データは再投影されず、ArcGIS 内でのクエリ結果をマッピングするときに使用する空間参照を定義しているだけであるという点に注意してください。
- SRID - レイヤーの空間参照 ID を表し、クエリで空間参照 ID が同じジオメトリだけを返すために使用されます。クエリ レイヤーが空間フィールドを持たない場合は、SRID 値はブランクです。値が設定されている場合、指定したジオメトリ SRID 値を持たないフィーチャはすべて結果セットから除外されます。
マップ内にクエリ レイヤーを作成するには、次の手順に従います。
- クエリ レイヤーをマップに追加するには、[マップ] リボンの [データの追加] ボタン をクリックし、ドロップダウン リストから [クエリ レイヤー] ボタン を選択します。クエリ レイヤーのウィンドウが開きます。
- [新しいクエリ レイヤー] ダイアログ ボックスの [名前] テキスト ボックスに、作成するクエリの名前を指定します。この名前は [コンテンツ] ウィンドウに表示されます。
- 表示された新しいクエリ レイヤーのウィンドウで、データを保存するデータベース接続を選択する必要があります。プロジェクトにすでに接続が存在している場合は、ドロップダウン リストから接続を選択します。プロジェクトに接続が存在していない場合は、[新しいデータベース接続] ボタン を選択して新しい接続を作成します。
- [クエリ] テキスト ボックスに SQL クエリを入力します。
データベースへの接続が確立されると、そのデータベースにあるテーブルとビューのリストがダイアログ ボックスの左側のウィンドウに表示されます。操作するテーブルを選択するには、テーブル名をクリックします。テーブルの列が右側のウィンドウに表示されます。
クエリの構築にあたって [クエリ] テキスト ボックスにテーブル全体を追加する場合は、テーブルをダブルクリックするか、[テーブルの一覧] ウィンドウのテーブルを [クエリ] テキスト ボックス内にドラッグします。
テーブルを 1 つ選択すると、そのテーブルの各列が表示されます。テーブル内の特定の列をクエリに追加する場合は、列名をダブルクリックするか、[列] ウィンドウから列名を [クエリ] テキスト ボックス内にドラッグします。
- レイヤーの空間プロパティを自分で定義するか、デフォルト オプションを使用して ArcGIS Pro で定義するかを選択します。
整合チェック処理時に、ArcGIS はクエリ レイヤーの次元、ジオメトリ タイプ、空間参照、SRID、および一意識別子のプロパティを設定します。これらの値は、クエリで返される先頭行に基づいています。これらのプロパティを手動で定義する場合は、[レイヤーの空間プロパティの定義] オプションを選択します。
- クエリを作成したら、その整合性をチェックする必要があります。[整合チェック] をクリックすると、クエリの構文が正しく、ArcGIS で利用できるデータを返すものであるか確認できます。整合チェック プロセスでは、データベースに対してクエリを実行し、クエリから返される結果セットが ArcGIS のデータ モデリング標準に従っているかどうかが確認されます。クエリ レイヤーは、整合性が確認されるまでマップに追加されません。
整合チェック ルールとして、次を満たしていることが確認されます。
- 結果セットの持つ空間フィールドは 1 つだけである。
- 結果セットが持つ空間参照は 1 つだけである。
- 結果セットが持つシェープ タイプは 1 つだけである。
- 結果セットに、ArcGIS のサポートしないフィールド タイプは含まれていない。
何らかの理由で整合チェックに失敗した場合は、エラー メッセージが返されるため、クエリを修正する必要があります。
整合チェックは、対象のデータが ArcGIS と同じ標準を使用しない空間データベース内のデータである場合に特に重要になります。
- クエリの整合チェックが正常に完了したら、[次へ] をクリックします。
- クエリ レイヤーの一意識別子フィールドを選択します。
マップのすべてのフィーチャには一意識別子が必要です。したがって、クエリ レイヤーには、各フィーチャの値を含む一意識別子が含まれている必要があります。詳細については、「クエリ レイヤーの一意識別子フィールドの選択」をご参照ください。
- ジオメトリ タイプと空間参照を選択して、クエリ レイヤーの空間プロパティを定義します。ArcGIS Pro で自動的に空間プロパティを決定するように選択した場合、これらのプロパティは設定済みです。
- ドロップダウン メニューからジオメトリ タイプを選択します。
- をクリックし、空間参照で使用する座標系を選択するか、既存のデータセットから空間参照をインポートします。
- 手順 5 でレイヤーの空間プロパティを定義するように選択した場合は、[レイヤー範囲プロパティ] でオプションを選択する必要があります。範囲を入力するか、マップ範囲を使用するか、空間参照の範囲を使用するかを選択できます。範囲を入力する場合、指定した範囲が有効であり、テーブル内のすべてのフィーチャが含まれる必要があります。[次へ] をクリックし、範囲の値を入力するよう選択した場合は値を指定します。自分で値を指定するよう選択しなかった場合は、マップまたは空間参照の範囲の値を確認します。
- [完了] をクリックし、クエリ レイヤーをマップに追加します。
クエリ レイヤー プロパティの変更について詳しくは、「クエリ レイヤーの変更」をご参照ください。