概要
共通フィールドに基づいて、レイヤーを別のレイヤーまたはテーブルに結合します。ラスター属性テーブルを含むフィーチャ レイヤー、テーブル ビュー、およびラスター レイヤーを使用できます。
[結合テーブル] 内のレコードは、入力の [レイヤー名] のレコードに一致します。入力の結合フィールドと、出力の結合フィールドの値が等しい場合に一致したと見なされます。この結合は一時的なものです。
図
使用法
入力は、フィーチャ レイヤー、テーブル ビュー、または属性テーブルを持つラスター レイヤーである必要があります。フィーチャクラスやテーブルは使用できません。
[結合テーブル] のレコードを、入力のレイヤーまたはテーブル ビュー内の複数のレコードに一致させることができます。1 対 1、多対 1、1 対多、多対多の詳細については、「テーブルの結合とリレートの詳細」をご参照ください。
テーブルを結合する場合、デフォルト オプションではすべてのレコードが保持されます。ターゲット テーブル内のレコードが結合テーブル内のレコードと一致しない場合は、結合テーブルからターゲット テーブルに付加されるすべてのフィールドについて、そのレコードに NULL 値が与えられます。
一致するレコードのみを保持するオプションでは、ターゲット テーブル内のレコードが結合テーブル内のレコードと一致しない場合に、そのレコードが結果のターゲット テーブルから削除されます。ターゲット テーブルがレイヤーの属性テーブルである場合、それらに結合されているデータを持たないフィーチャはマップに表示されません。
[結合テーブル] には、ジオデータベース テーブル、dBASE ファイル、INFO テーブル、OLE DB テーブルから任意のタイプのテーブルを指定できます。
入力のレイヤーまたはテーブル ビューには ObjectID フィールドが必要です。[結合テーブル] に ObjectID を含める必要はありません。
エイリアス、表示設定、数値形式などのフィールド プロパティは、結合が追加または削除された場合も維持されます。
同じテーブル名を使用した結合がすでに存在する場合、たとえば、レイヤー A がテーブル B と結合している場合に、ツールを実行してテーブル B と再び結合しようとすると、結合がすでに存在することを知らせる警告が表示されます。
結合はセッションの継続期間のみ有効です。他のセッションで使用するために結合を維持するには、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用して、レイヤーをレイヤー ファイルに保存してください。この操作はレイヤーに対してのみ可能です。テーブル ビューはこの方法では保存できません。
デフォルトとして、ツール実行後のレイヤーまたはテーブル ビューでは、入力のレイヤーまたはテーブル ビューのフィールドの前に入力の名前とピリオド (.) が追加され、結合テーブルのすべてのフィールドの前に結合テーブルの名前とピリオドが追加されます。
- たとえば、A と B というフィールドがある landuse を、C と D というフィールドがある lookup_tab に結合すると、ツール実行後のレイヤーまたはテーブル ビューのフィールドは llanduse.A、landuse.B、lookup_tab.C、lookup_tab.D になります。
- カバレッジ フィーチャクラスおよび INFO テーブルの場合は、テーブルとフィールド名の区切り文字がピリオドではなくコロン (:) になります。
永続的な結合を行う場合は、[フィールド結合 (Join Field)] ツールの使用を検討してください。結合を永続的にするためのもう 1 つの方法としては、結合したフィーチャ レイヤーを新しいフィーチャクラスに、または結合したテーブル ビューを新しいテーブルに保存します。結果を新しいフィーチャクラスまたはテーブルに保存する場合、環境設定の修飾されたフィールド名を使用すると、結合後の出力フィールドの名前を、フィールドの取得元のテーブルの名前で修飾するかどうかを制御できます。
結合のキーとなる、入力レイヤーまたはテーブル ビューおよび [結合テーブル] 内の各フィールドにインデックスを付けると、パフォーマンスを向上させることができます。この操作は、[属性インデックスの追加 (Add Attribute Index)] ツールを使用するか、ArcCatalog で入力を右クリックし、ダイアログ ボックスを使用して、希望するフィールドにインデックスを追加することによって行います。
入力のレイヤーまたはテーブル ビューのフィールドが [フィーチャ レイヤーの作成 (Make Feature Layer)] ツールまたは [テーブル ビューの作成 (Make Table View)] ツールの [フィールド情報] パラメーターを使用して変更 (名前の変更または非表示設定) された場合でも、このフィールド変更は、結合後の出力のレイヤーまたはテーブル ビューには反映されません。
[結合テーブル] の名前を数値で始めることはできません。
構文
arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type})
パラメーター | 説明 | データ タイプ |
in_layer_or_view | 結合テーブルに結合するレイヤーまたはテーブル ビュー | Raster Catalog Layer; Mosaic Layer; Raster Layer; Table View |
in_field | 結合のキーとなる、入力のレイヤーまたはテーブル ビューのフィールド | Field |
join_table | 入力レイヤーまたはテーブル ビューの結合先となるテーブルまたはテーブル ビュー | Raster Catalog Layer; Mosaic Layer; Raster Layer; Table View |
join_field | 結合のキーとなる値が格納されている、結合テーブル内のフィールド。 | Field |
join_type (オプション) | 入力の複数のレコードが結合テーブル内の単一のレコードに一致した場合の処理方法を指定します。
| Boolean |
派生した出力
名前 | 説明 | データ タイプ |
out_layer_or_view | 更新された入力データセット。 | テーブル ビュー; ラスター レイヤー; ラスター カタログ レイヤー; モザイク レイヤー |
コードのサンプル
AddJoin (テーブル結合) の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、イミディエイト モードで AddJoin 関数を使用する方法を示しています。
import arcpy
arcpy.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 (テーブル結合) の例 2 (スタンドアロン スクリプト)
次のスタンドアロン スクリプトは、AddJoin 関数をワークフローの一部として使用し、テーブルをフィーチャクラスに結合してから目的のフィーチャを抽出する方法を示しています。
# Name: AttributeSelection.py
# Purpose: Join a table to a featureclass and select the desired attributes
# Import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
arcpy.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)
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい