アタッチメントの追加 (Add Attachments) (データ管理)

サマリー

ジオデータベース フィーチャクラスまたはテーブルのレコードに、ファイル アタッチメントを追加します。 ジオデータベース内では、アタッチメントはターゲット データセットへのリンクを保持する独立したアタッチメント テーブルに格納されます。 入力レコード (またはレコードの属性グループ) ごとに、アタッチメントとしてそのレコードに追加するファイルのパスを示す照合テーブルを使用して、アタッチメントがターゲット データセットに追加されます。

アタッチメント ツールセットのツールの操作の詳細

アタッチメントの追加ツールの図

使用法

  • このツールでは選択は考慮されません。

  • このツールを使用してアタッチメントを追加する前に、[アタッチメントの有効化 (Enable Attachments)] ツールを使用してアタッチメントを有効にする必要があります。

  • このツールを使用して追加されるアタッチメントは、ジオデータベースにコピーされます。 元のアタッチメント ファイルは影響を受けません。 元のファイルが変更された場合、これらの変更はジオデータベースのアタッチメントに自動では反映されません。 ジオデータベースに対して変更を同期するには、[アタッチメントの削除 (Remove Attachments)] ツールを使用して影響を受けるアタッチメントを削除します。 その後、変更されたファイルを新しいアタッチメントとしてもう一度追加します。

  • 追加するアタッチメントのパスを示す既存のフィールドが [入力データセット] パラメーター値に含まれているときに、[照合テーブル] パラメーターで別の値を使用しない場合は、[入力データセット] パラメーターと [照合テーブル] パラメーターの両方に同じデータセットを指定します。 ツールは両方の結合フィールドの Object ID フィールドを自動的に選択し、入力のどのフィールドにアタッチメント ファイルのパスが含まれているかを指定することができます。

  • 1 つのフィーチャクラスまたはテーブルのレコードに、複数のファイルをアタッチすることができます。 これを実行するには、[照合テーブル] パラメーター値に、その入力 ID の複数のレコードが含まれるようにします。 たとえば、レコード 1 には入力 ID 1 とパス名 pic1a.jpg が含まれ、レコード 2 には入力 ID 1 とパス名 pic1b.jpg が含まれるなどです。

パラメーター

ラベル説明データ タイプ
入力データセット

アタッチメントが追加されるジオデータベース テーブルまたはフィーチャクラス。 アタッチメントは、このテーブルに直接追加されるのではなく、入力データセットへのリンクを保持する関連アタッチメント テーブルに追加されます。

データセットはバージョン 10.0 以降のジオデータベースに格納される必要があります。また、テーブルでアタッチメントが有効になっている必要もあります。

Table View
入力結合フィールド

[照合結合フィールド] パラメーター値内の値に一致している [入力データセット] パラメーター値のフィールド。 レコードの値が一致している場合に、アタッチメントが追加されます。 このフィールドには、Object ID フィールドまたはその他の個別属性を指定できます。

Field
照合テーブル

アタッチメントが追加される入力レコードと、これらのアタッチメントのパスを識別するテーブル。

Table View
照合結合フィールド

指定したアタッチメントが追加される [入力データセット] パラメーター値内のレコードを示す [照合テーブル] パラメーター値のフィールド。

Field
照合パス フィールド

[入力データセット] パラメーター値のレコードに追加するアタッチメントのパスを含む [照合テーブル] パラメーター値のフィールド。

in_dataset パラメーター値のレコードに追加するアタッチメントのパスを含む in_match_table パラメーター値のフィールド。

Field
作業フォルダー
(オプション)

アタッチメント ファイルを集中管理するフォルダーまたはワークスペース。 作業フォルダーを指定すると、[照合パス フィールド] パラメーター値のパスに、作業フォルダーを基準にして短いファイル名を指定できます。

たとえば、C:\MyPictures\image1.jpgC:\MyPictures\image2.jpg などのパスを使用してアタッチメントを読み込む場合に、パラメーター値 C:\MyPictures を使用します。 そうすれば、[照合パス フィールド] パラメーター値のパスに、絶対パスではなく image1.jpgimage2.jpg などの短い名前を指定できます。

Folder

派生した出力

ラベル説明データ タイプ
更新された入力データセット

更新された入力データセット。

Table View

arcpy.management.AddAttachments(in_dataset, in_join_field, in_match_table, in_match_join_field, in_match_path_field, {in_working_folder})
名前説明データ タイプ
in_dataset

アタッチメントが追加されるジオデータベース テーブルまたはフィーチャクラス。 アタッチメントは、このテーブルに直接追加されるのではなく、入力データセットへのリンクを保持する関連アタッチメント テーブルに追加されます。

データセットはバージョン 10.0 以降のジオデータベースに格納される必要があります。また、テーブルでアタッチメントが有効になっている必要もあります。

Table View
in_join_field

in_match_join_field パラメーター値内の値に一致している in_dataset パラメーター値のフィールド。 レコードの値が一致している場合に、アタッチメントが追加されます。 このフィールドには、Object ID フィールドまたはその他の個別属性を指定できます。

Field
in_match_table

アタッチメントが追加される入力レコードと、これらのアタッチメントのパスを識別するテーブル。

Table View
in_match_join_field

指定したアタッチメントが追加される in_dataset パラメーター値内のレコードを示す in_match_table パラメーター値のフィールド。

Field
in_match_path_field

[入力データセット] パラメーター値のレコードに追加するアタッチメントのパスを含む [照合テーブル] パラメーター値のフィールド。

in_dataset パラメーター値のレコードに追加するアタッチメントのパスを含む in_match_table パラメーター値のフィールド。

Field
in_working_folder
(オプション)

アタッチメント ファイルを集中管理するフォルダーまたはワークスペース。 作業フォルダーを指定すると、in_match_path_field パラメーター値のパスに、作業フォルダーを基準にして短いファイル名を指定できます。

たとえば、C:\MyPictures\image1.jpgC:\MyPictures\image2.jpg などのパスを使用してアタッチメントを読み込む場合に、パラメーター値 C:\MyPictures を使用します。 そうすれば、in_match_path_field パラメーター値のパスに、絶対パスではなく image1.jpgimage2.jpg などの短い名前を指定できます。

Folder

派生した出力

名前説明データ タイプ
out_dataset

更新された入力データセット。

Table View

コードのサンプル

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

次のコード スニペットは、Python ウィンドウで AddAttachments 関数を使用する方法を示しています。

import arcpy
arcpy.management.AddAttachments(
    r"C:\Data\City.gdb\Parcels", "ParcelID", r"C:\Data\matchtable.csv", 
    "ParcelID", "Picture", r"C:\Pictures")
AddAttachments の例 2 (スタンドアロン スクリプト)

次のスクリプトは、スタンドアロン スクリプトで AddAttachments 関数を使用する方法を示しています。

"""
Example: You have a folder of digital photographs of vacant homes; the photos
are named according to the Parcel ID of the house in the picture. Add
these photos to a parcel feature class as attachments.
"""

import arcpy
import os

input = r"C:\Data\City.gdb\Parcels"
inputField = "ParcelID"
matchTable = r"C:\Data\matchtable.csv"
matchField = "ParcelID"
pathField = "Picture" 
picFolder = r"C:\Pictures"

# Create a Match Table csv file
with open(matchTable, "w") as csv:
    # write a header row (the table will have two columns: ParcelID and Picture)
    csv.write(f"{matchField},{pathField}\n")
    
    # Iterate through each picture in the directory and write a row to the table
    for file in os.listdir(picFolder):
        if file.find(".jpg") > -1:
            csv.write(f"{file.replace('.jpg', '')},{file}\n")

# The input feature class must first have GDB attachments enabled
arcpy.management.EnableAttachments(input)

# Use the match table with the Add Attachments tool
arcpy.management.AddAttachments(input, inputField, matchTable, matchField, 
                                pathField, picFolder)

関連トピック