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

サマリー

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

アタッチメント ジオプロセシング ツールの操作の詳細

[アタッチメントの追加 (Add Attachments)] の図
[アタッチメントの追加 (Add Attachments)] の図

使用法

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

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

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

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

パラメーター

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

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

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

Table View
レイヤー、テーブル ビューのキーとなるフィールド

[照合結合フィールド] の値に一致する値を含む [入力データセット] のフィールド。[入力データセット][照合テーブル] の間で一致する結合フィールド値を持つレコードにアタッチメントが追加されます。このフィールドには、Object ID フィールドまたはその他の個別属性を指定できます。

Field
照合テーブル

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

Table View
照合結合フィールド

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

Field
照合パス フィールド

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

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

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

たとえば、C:\MyPictures\image1.jpg および C:\MyPictures\image2.jpg というパスのアタッチメントを読み込んでいる場合、[作業フォルダー]C:\MyPictures を設定すると、[照合パス フィールド]image1.jpg および image2.jpg という短い名前を、長い絶対パスの代わりに指定することができます。

Folder

派生した出力

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

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

テーブル ビュー

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

[照合結合フィールド] の値に一致する値を含む [入力データセット] のフィールド。[入力データセット][照合テーブル] の間で一致する結合フィールド値を持つレコードにアタッチメントが追加されます。このフィールドには、Object ID フィールドまたはその他の個別属性を指定できます。

Field
in_match_table

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

Table View
in_match_join_field

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

Field
in_match_path_field

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

Field
in_working_folder
(オプション)

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

たとえば、C:\MyPictures\image1.jpg および C:\MyPictures\image2.jpg というパスのアタッチメントを読み込んでいる場合、[作業フォルダー]C:\MyPictures を設定すると、[照合パス フィールド]image1.jpg および image2.jpg という短い名前を、長い絶対パスの代わりに指定することができます。

Folder

派生した出力

名前説明データ タイプ
out_dataset

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

テーブル ビュー

コードのサンプル

AddAttachments (アタッチメントの追加) の例 1 (Python ウィンドウ)

次のコード スニペットは、Python ウィンドウで AddAttachments (アタッチメントの削除) ツールを使用する方法を示しています。

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

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

"""
Example: we have a folder of digital photographs of vacant homes; the photos
are named according to the ParcelID of the house in the picture. Let's add
these photos to a parcel feature class as attachments.
"""
import csv
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 new Match Table csv file
writer = csv.writer(open(matchTable, "wb"), delimiter=",")
# write a header row (the table will have two columns: ParcelID and Picture)
writer.writerow([matchField, pathField])
# iterate through each picture in the directory and write a row to the table
for file in os.listdir(picFolder):
    if str(file).find(".jpg") > -1:
        writer.writerow([str(file).replace(".jpg", ""), file])
del writer
# the input feature class must first be GDB attachments enabled
arcpy.EnableAttachments_management(input)
# use the match table with the Add Attachments tool
arcpy.AddAttachments_management(input, inputField, matchTable, matchField, 
                                pathField, picFolder)