概要
入力 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 が使用されます。
構文
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 (オプション) | クエリ レイヤーのシェープ タイプを指定します。クエリの結果セットに含まれるレコードのうち、指定したシェープ タイプに一致するレコードだけが出力クエリ レイヤーで使用されます。ツールの整合チェックにより、結果セットの最初のレコードに基づいてこのプロパティが設定されます。目的の出力シェープ タイプに設定されていない場合は、ツールを実行する前に変更できます。クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。
| String |
srid (オプション) | ジオメトリを返すクエリの空間参照 ID (SRID)。クエリの結果セットに含まれるレコードのうち、指定した SRID 値に一致するレコードだけが出力クエリ レイヤーで使用されます。ツールの整合チェックにより、結果セットの最初のレコードに基づいてこのプロパティが設定されます。目的の出力 SRID 値に設定されていない場合は、ツールを実行する前に変更できます。クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。 | String |
spatial_reference (オプション) | 出力クエリ レイヤーで使用する座標系。ツールの整合チェックにより、結果セットの最初のレコードに基づいてこのプロパティが設定されます。目的の出力座標系に設定されていない場合は、ツールを実行する前に変更できます。クエリの結果セットがジオメトリ フィールドを返さない場合、このパラメーターは無視されます。 | Spatial Reference |
spatial_properties (オプション) | レイヤーの空間プロパティの定義方法を指定します。 整合チェック処理時に、クエリ レイヤーに対して次元、ジオメトリ タイプ、空間参照、SRID、および一意識別子の各プロパティが設定されます。これらの値は、クエリで返される先頭行に基づいています。テーブルに対するツールのクエリからこれらのプロパティを取得するのではなく、プロパティを手動で定義するには、このパラメーターのデフォルト値を使用します。
| Boolean |
m_values (オプション) | レイヤーに M 値が含まれるかどうかを指定します。
| Boolean |
z_values (オプション) | レイヤーに Z 値が含まれるかどうかを指定します。
| Boolean |
extent (オプション) | レイヤーの範囲。このパラメーターは、[レイヤーの空間プロパティの定義] (Python の spatial_properties = DEFINE_SPATIAL_PROPERTIES) がオンの場合のみ使用されます。この範囲にはテーブル内のすべてのフィーチャを含める必要があります。
| Extent |
派生した出力
名前 | 説明 | データ タイプ |
out_layer | 出力クエリ レイヤー。 | テーブル ビュー |
コードのサンプル
次の 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 ツールの使用方法を示します。
# 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)
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい