フィーチャ レイヤの作成(Make Feature Layer) (データ管理)
サマリ
フィーチャクラスまたはレイヤ ファイルから、フィーチャ レイヤを作成します。ツールで作成されたレイヤは一時的であり、レイヤをディスクに保存するか、またはマップ ドキュメントを保存しておかない限り、セッション後に削除されます。
使用法
-
テンポラリ フィーチャ レイヤは、[レイヤ ファイルの保存(Save To Layer File)] ツールを使用してレイヤ ファイルとして保存することも、あるいは [フィーチャのコピー(Copy Features)] ツールを使用して新しいフィーチャクラスとして保存することもできます。
-
アノテーションやディメンションなどのコンプレックス フィーチャクラスは、このツールではサポートされていません。
-
ArcCatalog で作成されたレイヤは、[レイヤ ファイルの保存(Save To Layer File)] ツールを使用してレイヤ ファイルに保存しておかない限り、ArcMap で使用できません。
SQL 式が使用され、その戻りがない場合、出力は空になります。
フィールド名は、[フィールド情報] コントロールを使用して新しい名前に変更できます。コントロールの 2 番目の列に、入力の既存のフィールド名が一覧表示されます。フィールドの名前を変更するには、フィールド名をクリックして新しい名前を入力します。
[フィールド情報] コントロールに定義された新しいフィールド名が以降のツールで使用されます。ただし、このツールがモデル内の最後ツールになる場合、フィールド名はディスク上のソース データから取得されます。新しいフィールド名を維持するには、[行のコピー(Copy Rows)] ツールか [フィーチャのコピー(Copy Features)] ツールを使用して、新しいレイヤを新しいデータに書き込む必要があります。
入力ワークスペースを指定すると、フィールド名が検証されます。したがって、入力がジオデータベース フィーチャクラスで、出力ワークスペースがフォルダの場合は、シェープファイルの属性名が 10 文字以下に制限されるため、フィールド名が切り捨てられる場合があります。新しい名前は、[フィールド情報] コントロールを使用して確認され、変更される可能性があります。
フィールドのサブセットは、[フィールド情報] コントロールの表示プロパティを使用して、新しいレイヤで使用できないようにすることができます。コントロールの 3 番目の列には、新しいレイヤでのフィールドの表示/非表示を指定するドロップダウン オプションがあります。デフォルト値は TRUE です。FALSE を選択すると、そのフィールドは非表示になります。新規に作成したレイヤが以降のプロセスまたはツールの入力になる場合、ワークフローの中で非表示のフィールドを使用することはできません。出力をディスクに保存すると、表示としてリストされているフィールドだけが新しいデータに反映されます。
-
スプリット ポリシーを設定するには、[フィールド情報] コントロールの [比率ポリシーの使用] オプションを使用します。フィーチャ レイヤをツールへの入力として使用していて、その入力フィーチャ レイヤのジオメトリが処理中に分割されるたびに、スプリット ポリシーが有効になります。スプリット ジオメトリを出力に送出すると、出力属性値に対する入力属性値の比率が計算されます。[比率ポリシーの使用] が有効な場合、オーバーレイ操作でフィーチャが分割されると、入力フィーチャの属性値の比率が出力フィーチャの属性に適用されます。入力フィーチャ ジオメトリが分割された比率に基づいて、出力値が決定されます。たとえば、入力ジオメトリが等分割された場合は、入力フィーチャの属性値の 1/2 が、新しい各フィーチャの属性値として割り当てられます。[比率ポリシーの使用] は数値フィールドにのみ適用されます。
デフォルトは NONE(オフ)です。つまり、分割後の 2 つのフィーチャの属性には、元の属性値のコピーが適用されます。
注意:ジオプロセシング ツールは、ジオデータベース フィーチャクラスまたはテーブル フィールドのスプリット ポリシーに従いません。
-
ModelBuilder を使用してツールを作成する場合、このツールへの入力データ変数を中間データとしてマークしないようにする必要があります。中間データとしてマークされた入力は、ダイアログからモデルを実行し終えたときに削除されます。この場合、その出力レイヤはマップに追加されません。
構文
パラメータ | 説明 | データ タイプ |
in_features |
新しいレイヤの作成に使用する、入力フィーチャクラスまたはレイヤ。アノテーションやディメンションなどのコンプレックス フィーチャクラスは、このツールへの入力としては有効でありません。 | Feature Layer |
out_layer |
作成されるフィーチャ レイヤの名前。新しく作成されたレイヤは、フィーチャ レイヤを入力として使用するジオプロセシング ツールへの入力として使用できます。 | Feature Layer |
where_clause (オプション) |
フィーチャのサブセットを選択するために使用する SQL 式。この式の構文はデータ ソースによって多少異なります。たとえば、クエリ対象がファイル ジオデータベース、ArcSDE ジオデータベース、シェープファイル、またはカバレッジの場合は、フィールド名を二重引用符で囲みます。 "MY_FIELD" クエリ対象がパーソナル ジオデータベースの場合は、以下のようにフィールドを角括弧で囲みます。 [MY_FIELD] Python では、文字列を単一引用符または二重引用符で囲みます。SQL 式の WHERE 句などで通常行われるように、引用符を含む文字列を作成する場合は、引用符を円記号(\)でエスケープするか、文字列を三重引用符で囲みます。たとえば、次のような WHERE 句を記述する場合、 "CITY_NAME" = 'Chicago' 次のように文字列全体を二重引用符で囲み、内部の二重引用符をエスケープします。 " \"CITY_NAME\" = 'Chicago' " または、次のように文字列全体を単一引用符で囲み、内部の単一引用符をエスケープします。 ' "CITY_NAME" = \'Chicago\' ' あるいは、次のようにエスケープしないで文字列全体を三重引用符で囲みます。 """ "CITY_NAME" = 'Chicago' """ SQL 構文の詳細とデータ ソースによる違いについては、ヘルプ トピックの「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。 | SQL Expression |
workspace (オプション) | フィールド名を検証するために使用する入力ワークスペース。入力がジオデータベース テーブルで、出力ワークスペースが dBASE テーブルの場合は、dBASE フィールドの名前が 10 文字以下に制限されるため、フィールド名が切り捨てられる場合があります。新しい名前は、フィールド情報コントロールを使用して確認され、変更される可能性があります。 | Workspace;Feature Dataset |
field_info (オプション) | フィールド名を確認、変更する場合や、出力レイヤ内のフィールドのサブセットを非表示にする場合に使用できます。スプリット ポリシーを指定できます。詳細については、使用方法をご参照ください。 | Field Info |
コードのサンプル
次の Python ウィンドウ スクリプトは、MakeFeatureLayer(フィーチャ レイヤの作成)関数をイミディエイト モードで使用する方法を、例を挙げて示したものです。
import arcpy
arcpy.env.workspace = "C:/data/input"
arcpy.MakeFeatureLayer_management("parcels.shp", "parcels_lyr")
次のスタンドアロン スクリプトは、MakeFeatureLayer(フィーチャ レイヤの作成)を使用してレイヤを作成する方法を示しています。作成されたレイヤは、Select Layer By Location(空間検索)ツールと Select Layer By Attribute(属性検索)ツールで使用できます。
# Name: ExtractFeaturesByLocationAndAttribute.py
# Description: Extracts features to a new feature class based on a location and an attribute query.
# Import system modules
import arcpy
from arcpy import env
# Set overwrite option
arcpy.env.overwriteOutput = True
# Put in error trapping in case an error occurs when running tool
try:
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("C:/data/mexico.gdb/cities","cities_lyr")
# Select all cities that overlap the chihuahua polygon
arcpy.SelectLayerByLocation_management("cities_lyr", "INTERSECT", "c:/data/mexico.gdb/chihuahua", "", "NEW_SELECTION")
# Within the selection (done above) further select only those cities that have a population >10,000
arcpy.SelectLayerByAttribute_management("cities_lyr", "SUBSET_SELECTION", "POPULATION > 10000")
# Write the selected features to a new featureclass
arcpy.CopyFeatures_management("cities_lyr", "c:/data/mexico.gdb/chihuahua_10000plus")
except:
print arcpy.GetMessages()