フィーチャ レイヤーの作成 (Make Feature Layer) (データ管理)

サマリー

フィーチャクラスまたはレイヤー ファイルから、フィーチャ レイヤーを作成します。 作成されるレイヤーは一時的なレイヤーであるため、そのレイヤーをディスクに保存するか、マップ ドキュメントを保存しない限り、セッションの終了後に削除されます。

使用法

  • テンポラリ フィーチャ レイヤーは、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用してレイヤー ファイルとして保存することも、あるいは [フィーチャのコピー (Copy Features)] ツールを使用して新しいフィーチャクラスとして保存することもできます。

  • アノテーションやディメンションなどのコンプレックス フィーチャクラスはサポートされていません。

  • SQL 式が使用され、その戻りがない場合、出力は空になります。

  • スプリット ポリシーを設定するには、[フィールド情報] パラメーターの [比率] オプションを使用します。 フィーチャ レイヤーをツールへの入力として使用していて、その入力フィーチャ レイヤーのジオメトリが処理中に分割されると、スプリット ポリシーが有効になります。 スプリット ジオメトリを出力に送出すると、出力属性値に対する入力属性値の比率が計算されます。 [比率] が有効な場合、オーバーレイ操作でフィーチャが分割されると、入力フィーチャの属性値の比率が出力フィーチャの属性に適用されます。 入力フィーチャ ジオメトリが分割された比率に基づいて、出力値が決定されます。 たとえば、入力ジオメトリが等分割された場合、入力フィーチャの属性値の 2 分の 1 が新しいフィーチャの属性値となります。 [比率] は数値フィールドにのみ適用されます。

    デフォルトは none (オフ) です。 つまり、分割後の 2 つのフィーチャの属性は、元のオブジェクトの属性値のコピーになります。

    注意:

    ジオプロセシング ツールは、ジオデータベース フィーチャクラスまたはテーブル フィールドのスプリット ポリシーに従いません。

  • ModelBuilder を使用してツールを作成する場合は必ず、このツールへの入力データ変数を中間データとしてマークしないようにします。 中間データとしてマークされた入力は、モデルを実行し終えたときに削除されます。この場合、その出力レイヤーはマップに追加されません。

  • モデルでは、このツールの出力変数を、作成されるレイヤーに適用されるシンボルを含むレイヤー ファイルに割り当てることができます。 作成されるレイヤーが、モデルまたはスクリプト ツールの出力パラメーターとしてマップに返される場合、レイヤー ファイルからのシンボルは維持されますが、ラベル プロパティは維持されません。 ただし、このツールによってモデル内に作成されたレイヤーが永続データとして保存され、その永続データが出力パラメーターとしてマップに返される場合、レイヤー ファイルからのラベル プロパティは正しく適用されます。

  • [入力フィーチャ] パラメーターの値がレイヤーの場合、入力のシンボル、選択、フィルター設定が出力レイヤーに転送されます。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

新しいレイヤーの作成に使用する入力フィーチャクラスまたはレイヤー。 アノテーションやディメンションなどのコンプレックス フィーチャクラスは、入力としては有効でありません。

Feature Layer
出力レイヤー

作成されるフィーチャ レイヤーの名前。 レイヤーは、フィーチャ レイヤーを入力として使用するジオプロセシング ツールへの入力として使用できます。

Feature Layer
(オプション)

フィーチャのサブセットを選択するために使用する SQL 式。

入力が既存のフィルター設定を持つレイヤーであり、このパラメーターで where 句が指定されている場合は、両方の where 句が出力レイヤーの AND 演算子で結合されます。 たとえば、入力レイヤーに ID > 10 の where 句があり、このパラメーターが ID < 20 に設定されている場合、得られたレイヤーの where 句は ID > 10 AND ID < 20 になります。

SQL Expression
ワークスペースまたはフィーチャ データセット
(オプション)

このパラメーターは使用されていません。

Workspace; Feature Dataset
フィールド情報
(オプション)

出力レイヤーに含める、入力フィーチャのフィールド。 これらのフィールドを非表示に設定することで、入力フィールドを除外できます。また、数値フィールドには比率スプリット ポリシーを設定できます。 フィールド名の変更はサポートされていません。

Field Info

arcpy.management.MakeFeatureLayer(in_features, out_layer, {where_clause}, {workspace}, {field_info})
名前説明データ タイプ
in_features

新しいレイヤーの作成に使用する入力フィーチャクラスまたはレイヤー。 アノテーションやディメンションなどのコンプレックス フィーチャクラスは、入力としては有効でありません。

Feature Layer
out_layer

作成されるフィーチャ レイヤーの名前。 レイヤーは、フィーチャ レイヤーを入力として使用するジオプロセシング ツールへの入力として使用できます。

Feature Layer
where_clause
(オプション)

フィーチャのサブセットを選択するために使用する SQL 式。SQL 構文の詳細については、「ArcGIS で使用される条件式の SQL リファレンス」をご参照ください。

入力が既存のフィルター設定を持つレイヤーであり、このパラメーターで where 句が指定されている場合は、両方の where 句が出力レイヤーの AND 演算子で結合されます。 たとえば、入力レイヤーに ID > 10 の where 句があり、このパラメーターが ID < 20 に設定されている場合、得られたレイヤーの where 句は ID > 10 AND ID < 20 になります。

SQL Expression
workspace
(オプション)

このパラメーターは使用されていません。

Workspace; Feature Dataset
field_info
(オプション)

出力レイヤーに含める、入力フィーチャのフィールド。 これらのフィールドを非表示に設定することで、入力フィールドを除外できます。また、数値フィールドには比率スプリット ポリシーを設定できます。 フィールド名の変更はサポートされていません。

Field Info

コードのサンプル

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

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

import arcpy

arcpy.env.workspace = "C:/data/input"
arcpy.management.MakeFeatureLayer("parcels.shp", "parcels_lyr")
MakeFeatureLayer (フィーチャ レイヤーの作成) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、MakeFeatureLayer 関数を使用して、SelectLayerByLocation および SelectLayerByAttribute 関数で使用可能なレイヤーを作成する方法を示しています。

# Name: makefeaturelayer_example_2.py
# Description:  Uses MakeFeatureLayer with custom field info as input to Intersect

# Import system modules
import arcpy
from arcpy import env

# Set overwrite option
arcpy.env.overwriteOutput = True

# Set data path
cityboundaries = "C:/data/City.gdb/boundaries"
countyboundaries = "C:/data/City.gdb/counties"

# Get the fields from the input
fields= arcpy.ListFields(cityboundaries)

# Create a fieldinfo object
fieldinfo = arcpy.FieldInfo()

# Iterate through the input fields and add them to fieldinfo
for field in fields:
    if field.name == "POPULATION":
        # Set the Population to have a ratio split policy
        fieldinfo.addField(field.name, field.name, "VISIBLE", "RATIO")
    else:
        fieldinfo.addField(field.name, field.name, "VISIBLE", "NONE")

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management(cityboundaries, "city_boundaries_lyr", fieldinfo)

# Intersect cities and counties, splitting city population proportionally by county
arcpy.Intersect_analysis([["city_boundaries_lyr"],[countyboundaries]], "memory/intersected_city_counties")