ラベル | 説明 | データ タイプ |
入力フィーチャ | 新しいレイヤーの作成元となる入力フィーチャクラスまたはレイヤー。 アノテーションやディメンションなどのコンプレックス フィーチャクラスは、有効な入力ではありません。 | Feature Layer |
出力レイヤー | 作成されるフィーチャ レイヤーの名前。 新しく作成されたレイヤーは、フィーチャ レイヤーを入力として使用するジオプロセシング ツールへの入力として使用できます。 | Feature Layer |
式 (オプション) | フィーチャのサブセットを選択するために使用する SQL 式。 入力がフィルター設定が存在するレイヤーであり、WHERE 句がこのパラメーターで指定されている場合、出力レイヤーの AND 演算子を使用して、両方の WHERE 句が結合されます。 たとえば、入力レイヤーに ID > 10 という WHERE 句があり、このパラメーターが ID < 20 に設定されている場合、生成されるレイヤーの WHERE 句は ID > 10 AND ID < 2 になります。 | SQL Expression |
ワークスペースまたはフィーチャ データセット (オプション) | フィールド名の整合チェックに使用される入力ワークスペース。入力がジオデータベース テーブルで、出力ワークスペースが dBASE テーブルの場合は、dBASE フィールドの名前が 10 文字以下に制限されるため、フィールド名が切り捨てられる場合があります。 | Workspace; Feature Dataset |
フィールド情報 (オプション) | 名前が変更され、出力に表示される入力のフィールド。 スプリット ポリシーを指定できます。 | Field Info |
サマリー
入力フィーチャクラスまたはレイヤー ファイルから、フィーチャ レイヤーを作成します。 作成されるレイヤーは一時的なレイヤーであるため、そのレイヤーをディスクに保存するか、マップ ドキュメントを保存しない限り、セッションの終了後に削除されます。
使用法
テンポラリ フィーチャ レイヤーは、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用してレイヤー ファイルとして保存することも、あるいは [フィーチャのコピー (Copy Features)] ツールを使用して新しいフィーチャクラスとして保存することもできます。
アノテーションやディメンションなどの複雑なフィーチャクラスは、サポートされていません。
SQL 式が使用され、その戻りがない場合、出力は空になります。
入力ワークスペースを指定すると、フィールド名が検証されます。したがって、入力がジオデータベース フィーチャクラスで、出力ワークスペースがフォルダーの場合は、シェープファイルの属性名が 10 文字以下に制限されるため、フィールド名が切り捨てられる場合があります。
スプリット ポリシーを設定するには、[フィールド情報] パラメーターの [比率] オプションを使用します。 フィーチャ レイヤーをツールへの入力として使用していて、その入力フィーチャ レイヤーのジオメトリが処理中に分割されると、スプリット ポリシーが有効になります。 スプリット ジオメトリを出力に送出すると、出力属性値に対する入力属性値の比率が計算されます。 [比率] が有効な場合、オーバーレイ操作でフィーチャが分割されると、入力フィーチャの属性値の比率が出力フィーチャの属性に適用されます。 入力フィーチャ ジオメトリが分割された比率に基づいて、出力値が決定されます。 たとえば、入力ジオメトリが等分割された場合は、入力フィーチャの属性値の 1/2 が、新しい各フィーチャの属性値として割り当てられます。 [比率] ポリシーは、数値フィールドにのみ適用されます。
デフォルトは、なし (オフ) です。 つまり、分割後の 2 つのフィーチャの属性には、元の属性値のコピーが適用されます。
注意:
ジオプロセシング ツールは、ジオデータベース フィーチャクラスまたはテーブル フィールドのスプリット ポリシーに従いません。
ModelBuilder を使用してツールを作成する場合、このツールへの入力データ変数を中間データとしてマークしないようにします。 中間データとしてマークされた入力は、モデルを実行し終えたときに削除されます。この場合、その出力レイヤーはマップに追加されません。
モデルでは、[フィーチャ レイヤーの作成 (Make Feature Layer)] ツールの出力変数を、作成されるレイヤーにシンボルを適用する元のレイヤー ファイルに割り当てることができます。 作成されるレイヤーが、モデルまたはスクリプト ツールの出力パラメーターとしてマップに返される場合、レイヤー ファイルからのシンボルは維持されますが、ラベル プロパティは維持されません。 ただし、(モデル内の) [フィーチャ レイヤーの作成 (Make Feature Layer)] ツールによって作成されたレイヤーが永続データ (フィーチャクラスまたはシェープファイル) として保存され、その永続データが出力パラメーターとしてマップに返される場合、レイヤー ファイルからのラベル プロパティは正しく適用されます。
[入力フィーチャ] のパラメーター値がレイヤーの場合、入力のシンボル、選択、およびフィルター設定が出力レイヤーに転送されます。
パラメーター
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 句がこのパラメーターで指定されている場合、出力レイヤーの AND 演算子を使用して、両方の WHERE 句が結合されます。 たとえば、入力レイヤーに ID > 10 という WHERE 句があり、このパラメーターが ID < 20 に設定されている場合、生成されるレイヤーの WHERE 句は ID > 10 AND ID < 2 になります。 | SQL Expression |
workspace (オプション) | フィールド名の整合チェックに使用される入力ワークスペース。入力がジオデータベース テーブルで、出力ワークスペースが dBASE テーブルの場合は、dBASE フィールドの名前が 10 文字以下に制限されるため、フィールド名が切り捨てられる場合があります。 | Workspace; Feature Dataset |
field_info (オプション) | 名前が変更され、出力に表示される入力のフィールド。 スプリット ポリシーを指定できます。 | Field Info |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで MakeFeatureLayer 関数を使用する方法を示しています。
import arcpy
arcpy.env.workspace = "C:/data/input"
arcpy.management.MakeFeatureLayer("parcels.shp", "parcels_lyr")
次のスタンドアロン スクリプトは、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")