クエリ レイヤーの作成 (Make Query Layer) (データ管理)

サマリー

入力 SQL の SELECT ステートメントに基づいて、DBMS からクエリ レイヤーを作成します。

使用法

  • クエリ レイヤーは、エンタープライズ データベースのみで動作します。 ファイル ジオデータベースは、このツールに有効な入力ワークスペースではありません。

  • ツールで作成されたレイヤーは一時的なものであり、プロジェクトを保存するか、[行のコピー (Copy Rows)] または [フィーチャのコピー (Copy Features)] でコピーを作成してデータを保持しておかない限り、セッション終了後に削除されます。

  • 入力した SQL クエリの結果として空間列が返された場合、出力はフィーチャ レイヤーとなります。 SQL クエリが空間列を返さない場合、出力はスタンドアロン テーブルになります。

  • このツールで必要な接続ファイルは、[データベース コネクションの作成 (Create Database Connection)] ツールを使用して作成できます。

  • SQL クエリの結果で行が返されない場合、出力クエリ レイヤーは空になり、クエリで返された列のスキーマのみが含まれます。 この場合、返された列に空間列が含まれていると、ツールは次のデフォルト設定を使用してクエリ レイヤーを作成します。

    • ジオメトリ タイプ - POINT
    • SRID - 1
    • 空間参照 - NAD1983

    次に、ツールを実行する前に、これらの値のいずれかを変更すべきかどうかを決定する必要があります。

  • 地理データの場合、SQL ステートメントから返された結果の各レコードには、空間参照 ID (SRID) が関連付けられています。 SRID 値は、データの空間参照を決定するためにデータベースによって使用されます。 SRID に関する特定の機能は、DBMS プラットフォーム間で異なります。 同じテーブル内で複数の SRID 値をサポートする DBMS プラットフォームもあります。 ArcGIS は 1 つの値しかサポートしません。 このツールでは SRID 値を選択することができ、デフォルトでは結果セットの最初のレコードの SRID が使用されます。

パラメーター

ラベル説明データ タイプ
入力データベース コネクション

クエリ対象のデータを含むデータベース コネクション ファイル。

Workspace
出力レイヤー名

作成されるフィーチャ レイヤーまたはテーブル ビューの出力名。

String
クエリ

データベースで実行する SELECT クエリを定義する SQL ステートメント。

注意:

残りのコントロールが有効化される前に、この文字列は検証をパスする必要があります。 検証は、入力ボックス以外の場所をクリックしたときに実行されます。 検証プロセスでは、データベースに対してクエリを実行し、SQL クエリの結果が ArcGIS のデータ モデリング標準に従っているかどうかが確認されます。 検証に失敗した場合は、ツールが警告を返します。 唯一の例外は ModelBuilder の場合で、入力が出力データであるときは、検証が実行されません。

検証ルールとして、次を満たしていることが確認されます。

  • SQL クエリの結果に含まれる空間フィールドは 1 つのみである。
  • SQL クエリの結果に含まれる空間参照は 1 つのみである。
  • SQL クエリの結果に含まれるエンティティ タイプ (ポイント、マルチポイント、ライン、ポリゴンなど) は 1 つのみである。
  • SQL クエリの結果に、ArcGIS でサポートされていないフィールド タイプを含めることはできません。 ArcGIS でサポートされているフィールド タイプについては、「ArcGIS フィールド データ タイプ」をご参照ください。

検証は、対象のデータが ArcGIS と同じ標準を使用しない空間データベース内のデータである場合に特に重要になります。

String
一意の識別子フィールド
(オプション)

動的で一意な行 ID を生成する、SELECT ステートメントの SELECT リストの 1 つ以上のフィールド。

String
シェープ タイプ
(オプション)

クエリ レイヤーのシェープ タイプを指定します。 クエリの結果セットに含まれるレコードのうち、指定したシェープ タイプに一致するレコードだけが出力クエリ レイヤーで使用されます。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力シェープ タイプに設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

  • ポイント出力クエリ レイヤーはポイント ジオメトリを使用します。
  • マルチポイント出力クエリ レイヤーはマルチポイント ジオメトリを使用します。
  • ポリゴン出力クエリ レイヤーはポリゴン ジオメトリを使用します。
  • ポリライン出力クエリ レイヤーはポリライン ジオメトリを使用します。
String
SRID
(オプション)

ジオメトリを返すクエリの空間参照 ID (SRID)。 クエリの結果セットに含まれるレコードのうち、指定した SRID 値に一致するレコードだけが出力クエリ レイヤーで使用されます。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力 SRID 値に設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

String
座標系
(オプション)

出力クエリ レイヤーで使用する座標系。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力座標系に設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

Spatial Reference
レイヤーの空間プロパティの定義
(オプション)

レイヤーの空間プロパティの定義方法を指定します。

検証処理時に、クエリ レイヤーに対して次元、ジオメトリ タイプ、空間参照、SRID、および一意識別子の各プロパティが設定されます。 これらの値は、クエリで返される先頭行に基づいています。 テーブルに対するツールのクエリからこれらのプロパティを取得するのではなく、プロパティを手動で定義するために、このパラメーターがデフォルトでオンになっています。

  • オン - レイヤーの空間プロパティを手動で定義します。 これがデフォルトです。
  • オフ - クエリで返される先頭行に基づいてレイヤー プロパティが決定されます。
Boolean
座標に M 値を含める
(オプション)

レイヤーに M 値が含まれるかどうかを指定します。

  • オン - レイヤーに M 値が含まれます。
  • オフ - レイヤーに M 値は含まれません。 これがデフォルトです。
Boolean
座標に Z 値を含める
(オプション)

レイヤーに Z 値が含まれるかどうかを指定します。

  • オン - レイヤーに Z 値が含まれます。
  • オフ - レイヤーに Z 値は含まれません。 これがデフォルトです。
Boolean
範囲
(オプション)

レイヤーの範囲。 このパラメーターは、[レイヤーの空間プロパティの定義] (Python の spatial_properties = DEFINE_SPATIAL_PROPERTIES) がオンの場合のみ使用されます。 この範囲にはテーブル内のすべてのフィーチャを含める必要があります。

  • [現在の表示範囲] マップ ビュー - 範囲は、アクティブなマップまたはシーンに基づきます。 このオプションは、アクティブなマップが存在する場合にのみ使用できます。
  • [範囲の描画] 直角化して完了 - 範囲は、マップまたはシーンに描画された四角形に基づきます。 このオプションは、プロジェクト ジオデータベースにフィーチャクラスを作成し、レイヤーをマップに追加します。 フィーチャクラスの座標系はマップと同じです。
    注意:

    このオプションは、[環境] ダイアログ ボックスでは使用できません。 範囲データ タイプを使用するツール パラメーターまたはツール ダイアログ ボックスの [環境] タブからのみ使用できます。

    注意:

    編集タブで編集を有効/無効にする編集オプションがオンの場合、範囲を描画するには [編集] リボン タブで編集を有効化する必要があります。

  • [レイヤーの範囲] Layer - 範囲は、アクティブなマップ レイヤーに基づきます。 ドロップダウン リストを使用して使用可能なレイヤーを選択するか、[すべてのレイヤーのデータの範囲] オプションを使用して、ベースマップを除くすべてのアクティブなマップ レイヤーを組み合わせた範囲を取得します。 このオプションは、レイヤーを含むアクティブなマップが存在する場合にのみ使用できます。

    各マップ レイヤーには、次のオプションがあります。

    • [すべてのフィーチャ] すべて選択 - レイヤーのすべてのフィーチャの範囲。
    • [選択フィーチャ]Area from Selected Features - レイヤーの選択フィーチャの範囲。
    • [表示フィーチャ] Extent Indicator - レイヤーの表示フィーチャの範囲。
      注意:

      [選択フィーチャ] Area from Selected Features[表示フィーチャ] Extent Indicator オプションの範囲は、フィーチャ レイヤーでのみ使用できます。

  • [参照] 参照 - 範囲は、既存のデータに基づきます。
  • [クリップボード] 貼り付け - 範囲をクリップボードにコピーしたり、クリップボードから貼り付けたりできます。
    • [範囲をコピー] コピー - 範囲の座標と座標系をクリップボードにコピーします。
    • [範囲を貼り付け] 貼り付け - 範囲の座標と、必要に応じて座標系をクリップボードから貼り付けます。 クリップボードの値に座標系が含まれていない場合、マップの座標系が範囲に使用されます。
    注意:

    範囲の座標は、ArcPy Extent オブジェクトと同じ書式と順序 (x-min、y-min、x-max、y-max、空間参照) を使用して、クリップボードからコピーおよびクリップボードから貼り付けられます。

  • [範囲をリセット] リセット - 範囲はデフォルト値にリセットされます。
  • 手動入力した座標値 - 座標値は数値であり、アクティブなマップの座標系で表示する必要があります。
    注意:

    マップで、入力された座標と異なる表示単位が使用されることがあります。 基本方向 (N、S、E、W) を使用することはできません。 南と西の座標にはマイナス値の記号を使用します。

Extent

派生した出力

ラベル説明データ タイプ
出力レイヤー

出力クエリ レイヤー。

Table View

arcpy.management.MakeQueryLayer(input_database, out_layer_name, query, {oid_fields}, {shape_type}, {srid}, {spatial_reference}, {spatial_properties}, {m_values}, {z_values}, {extent})
名前説明データ タイプ
input_database

クエリ対象のデータを含むデータベース コネクション ファイル。

Workspace
out_layer_name

作成されるフィーチャ レイヤーまたはテーブル ビューの出力名。

String
query

データベースに発行される SELECT クエリを定義する SQL ステートメント。

String
oid_fields
[oid_fields,...]
(オプション)

動的で一意な行 ID を生成する、SELECT ステートメントの SELECT リストの 1 つ以上のフィールド。

String
shape_type
(オプション)

クエリ レイヤーのシェープ タイプを指定します。 クエリの結果セットに含まれるレコードのうち、指定したシェープ タイプに一致するレコードだけが出力クエリ レイヤーで使用されます。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力シェープ タイプに設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

  • POINT出力クエリ レイヤーはポイント ジオメトリを使用します。
  • MULTIPOINT出力クエリ レイヤーはマルチポイント ジオメトリを使用します。
  • POLYGON出力クエリ レイヤーはポリゴン ジオメトリを使用します。
  • POLYLINE出力クエリ レイヤーはポリライン ジオメトリを使用します。
String
srid
(オプション)

ジオメトリを返すクエリの空間参照 ID (SRID)。 クエリの結果セットに含まれるレコードのうち、指定した SRID 値に一致するレコードだけが出力クエリ レイヤーで使用されます。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力 SRID 値に設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

String
spatial_reference
(オプション)

出力クエリ レイヤーで使用する座標系。 ツールの検証により、結果セットの最初のレコードに基づいてこのプロパティが設定されます。 正しい出力座標系に設定されていない場合は、ツールを実行する前に変更できます。 クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。

Spatial Reference
spatial_properties
(オプション)

レイヤーの空間プロパティの定義方法を指定します。

検証処理時に、クエリ レイヤーに対して次元、ジオメトリ タイプ、空間参照、SRID、および一意識別子の各プロパティが設定されます。 これらの値は、クエリで返される先頭行に基づいています。 テーブルに対するツールのクエリからこれらのプロパティを取得するのではなく、プロパティを手動で定義するには、このパラメーターのデフォルト値を使用します。

  • DEFINE_SPATIAL_PROPERTIESレイヤーの空間プロパティを手動で定義します。 これがデフォルトです。
  • DO_NOT_DEFINE_SPATIAL_PROPERTIESクエリで返される先頭行に基づいてレイヤー プロパティが決定されます。
Boolean
m_values
(オプション)

レイヤーに M 値が含まれるかどうかを指定します。

  • INCLUDE_M_VALUESレイヤーに M 値が含まれます。
  • DO_NOT_INCLUDE_M_VALUESレイヤーに M 値は含まれません。 これがデフォルトです。
Boolean
z_values
(オプション)

レイヤーに Z 値が含まれるかどうかを指定します。

  • INCLUDE_Z_VALUESレイヤーに Z 値が含まれます。
  • DO_NOT_INCLUDE_Z_VALUESレイヤーに Z 値は含まれません。 これがデフォルトです。
Boolean
extent
(オプション)

レイヤーの範囲。 このパラメーターは、[レイヤーの空間プロパティの定義] (Python の spatial_properties = DEFINE_SPATIAL_PROPERTIES) がオンの場合のみ使用されます。 この範囲にはテーブル内のすべてのフィーチャを含める必要があります。

  • MAXOF - すべての入力データの最大範囲が使用されます。
  • MINOF - すべての入力データに共通する最小領域が使用されます。
  • DISPLAY - 範囲は、表示範囲と同じになります。
  • レイヤー名 - 指定したレイヤーの範囲が使用されます。
  • Extent オブジェクト - 指定したオブジェクトの範囲が使用されます。
  • 座標のスペース区切りの文字列 - 指定した文字列の範囲が使用されます。 座標は、x-min、y-min、x-max、y-max の順序で表されます。
Extent

派生した出力

名前説明データ タイプ
out_layer

出力クエリ レイヤー。

Table View

コードのサンプル

MakeQueryLayer の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで MakeQueryLayer 関数を使用する方法を示しています。

import arcpy

sr = arcpy.SpatialReference("WGS 1984 UTM Zone 12N")

arcpy.MakeQueryLayer_management("Connections/moab.sde",
                                "Slickrock",
                                "select * from moabtrails where name = 'slickrock'",
                                "OBJECTID",
                                "POLYLINE",
                                "32611",
                                sr)
MakeQueryLayer の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトで、MakeQueryLayer 関数を使用する方法を示します。

# Name: MakeQueryLayer.py
# Description: Creates an output query layer based on a where clause.
#   This example shows how to create a spatial reference object using the
#   name of a coordinate system. It also demonstrates how to use two fields
#   to generate a dynamic unique row identifier for the query layer.


# Import system modules
import arcpy

# Create the spatial reference for the output layer.
sr = arcpy.SpatialReference("WGS 1984 UTM Zone 12N")

# Run the tool
arcpy.MakeQueryLayer_management("Connections/moab.sde",
                                "Single Track",
                                "select * from moabtrails where type = 'single'",
                                "UID;name",
                                "POLYLINE",
                                "32611",
                                sr)

関連トピック