テーブル結合(Add Join) (データの管理)
サマリ
レイヤ(この場合は、フィーチャ レイヤ、テーブル ビュー、またはラスタ属性テーブルを持つラスタ レイヤ)を、コマンド フィールドに基づいて別のレイヤまたはテーブルに結合します。
[結合先のテーブル] 内のレコードは、入力の [レイヤ名] のレコードに一致します。入力の結合フィールドと、出力の結合フィールドの値が等しい場合に一致したと見なされます。この結合は一時的なものです。
図
使用法
-
入力は、フィーチャ レイヤ、テーブル ビュー、または属性テーブルを持つラスタ レイヤである必要があります。フィーチャクラスやテーブルは使用できません。
-
[結合先のキーとなるフィールド] 内の値が一意でない場合は、各値の最初の値のみが使用されます。
-
結合はセッションの継続期間のみ有効です。他のセッションで使用するために結合を維持するには、[レイヤ ファイルの保存(Save To Layer File)] ツールを使用して、レイヤをレイヤ ファイルに保存してください。この操作はレイヤに対してのみ可能です。テーブル ビューはこの方法では保存できません。
永続的な結合を行う場合は、[フィールド結合(Join Field)] ツールの使用を検討してください。結合を永続的にするためのもう 1 つの方法としては、結合したフィーチャ レイヤを新しいフィーチャクラスに、または結合したテーブル ビューを新しいテーブルに保存します。
- ArcMap で、入力のレイヤまたはテーブル ビューを右クリックし、[データ] → [データのエクスポート] の順にクリックし、出力のフィーチャクラス、シェープファイル、テーブル、または dBASE テーブルを指定します。
- 入力がフィーチャ レイヤの場合は [フィーチャのコピー(Copy Features)] ツールを使用し、入力がテーブル ビューの場合は [行のコピー(Copy Rows)] ツールを使用します。
-
このツールは ArcMap だけに限定されません。ArcCatalog のレイヤやテーブル ビュー、およびスクリプトでも機能します。[フィーチャ レイヤの作成(Make Feature Layer)] ツールはフィーチャクラスからレイヤを作成するのに対して、[テーブル ビューの作成(Make Table View)] ツールは入力テーブルまたはフィーチャクラスからテーブル ビューを作成します。
-
[結合先のテーブル] には、ジオデータベース テーブル(ArcSDE、ファイル、パーソナル)、dBASE ファイル、INFO テーブル、OLE DB テーブルから任意のタイプのテーブルを指定できます。
-
入力のレイヤまたはテーブル ビューには ObjectID フィールドが必要です。[結合先のテーブル] に ObjectID を含める必要はありません。
-
結合のキーとなる、入力レイヤまたはテーブル ビューおよび [結合先のテーブル] 内の各フィールドにインデックスを付けると、パフォーマンスを向上させることができます。この操作は、[属性インデックスの追加(Add Attribute Index)] ツールを使用するか、ArcCatalog で入力を右クリックし、ダイアログ ボックスを使用して、希望するフィールドにインデックスを追加することによって行います。
-
デフォルトとして、ツール実行後のレイヤまたはテーブル ビューでは、入力のレイヤまたはテーブル ビューのフィールドの前に入力の名前とピリオド(.)が追加され、結合先のテーブルのすべてのフィールドの前に結合先のテーブルの名前とピリオドが追加されます。
- たとえば、「A」と「B」というフィールドがある「landuse」を、「C」と「D」というフィールドがある「lookup_tab」に結合すると、ツール実行後のレイヤまたはテーブル ビューのフィールドは「landuse.A」、「landuse.B」、「lookup_tab.C」、「lookup_tab.D」になります。
- カバレッジ フィーチャクラスおよび INFO テーブルの場合は、テーブルとフィールド名の区切り文字がピリオドではなくコロン(:)になります。
-
[テーブル結合(Add Join)] の結果は、[フィーチャのコピー(Copy Features)] ツールまたは [行のコピー(Copy Rows)] ツールを使用して、新しいフィーチャクラスに保存できます。これらのコピー ツールを使用して結果を保存する場合、環境設定の修飾されたフィールド名を使用すると、結合後の出力フィールドの名前を、フィールドの取得元のテーブルの名前で修飾するかどうかを制御できます。
-
[結合先のテーブル] のレコードを、入力のレイヤまたはテーブル ビュー内の複数のレコードに一致させることができます。
-
入力のレイヤまたはテーブル ビューのフィールドが [フィーチャ レイヤの作成(Make Feature Layer)] ツールまたは [テーブル ビューの作成(Make Table View)] ツールの [フィールド情報] パラメータを使用して変更(名前の変更または非表示設定)された場合でも、このフィールド変更は、結合後の出力のレイヤまたはテーブル ビューには反映されません。
-
[結合先のテーブル] の名前を数値で始めることはできません。
構文
パラメータ | 説明 | データ タイプ |
in_layer_or_view |
結合先のテーブルに結合するレイヤまたはテーブル ビュー | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
in_field |
結合のキーとなる、入力のレイヤまたはテーブル ビューのフィールド | Field |
join_table |
入力レイヤまたはテーブル ビューの結合先となるテーブルまたはテーブル ビュー | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
join_field |
結合のキーとなる値が格納されている、結合テーブル内のフィールド。 | Field |
join_type (オプション) |
入力の複数のレコードが結合先のテーブル内の単一のレコードに一致した場合の処理方法を指定します。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトで、AddJoin(テーブル結合)関数をイミディエイト モードで使用する方法を示します。
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.MakeFeatureLayer_management ( "Habitat_Analysis.gdb/vegtype", "veg_layer") arcpy.AddJoin_management( "veg_layer", "HOLLAND95", "vegtable.dbf", "HOLLAND95") arcpy.CopyFeatures_management( "veg_layer", "Habitat_Analysis.gdb/vegjoin")
次のスタンドアロン スクリプトで、AddJoin(テーブル結合)関数をワークフローの一部として使用して、テーブルをフィーチャクラスに結合してから任意のフィーチャを抽出する方法を示します。
# Name: AttributeSelection.py # Purpose: Join a table to a featureclass and select the desired attributes # Author: ESRI # Import system modules import arcpy from arcpy import env try: # Set environment settings env.workspace = "C:/data" env.qualifiedFieldNames = False # Set local variables inFeatures = "Habitat_Analysis.gdb/vegtype" layerName = "veg_layer" joinTable = "vegtable.dbf" joinField = "HOLLAND95" expression = "vegtable.HABITAT = 1" outFeature = "Habitat_Analysis.gdb/vegjoin" # Create a feature layer from the vegtype featureclass arcpy.MakeFeatureLayer_management (inFeatures, layerName) # Join the feature layer to a table arcpy.AddJoin_management(layerName, joinField, joinTable, joinField) # Select desired features from veg_layer arcpy.SelectLayerByAttribute_management(layerName, "NEW_SELECTION", expression) # Copy the layer to a new permanent feature class arcpy.CopyFeatures_management(layerName, outFeature) except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message