アタッチメントの追加(Add Attachments) (データ管理)
サマリ
ジオデータベース フィーチャクラスまたはテーブルのレコードに、ファイル アタッチメントを追加します。ジオデータベースの内部では、アタッチメントはターゲット データセットへのリンクを保持する独立したアタッチメント テーブルに格納されます。入力レコード(またはレコードの属性グループ)ごとに、アタッチメントとしてレコードに追加するファイルのパスを指定する照合テーブルを使用して、アタッチメントがターゲット データセットに追加されます。
図
使用法
このツールを使用してアタッチメントを追加する前に、[アタッチメントの有効化(Enable Attachments)] ツールを使用してアタッチメントを有効にする必要があります。
このツールを使用して追加されるアタッチメントは、内部的な処理としてジオデータベースにコピーされます。元のアタッチメント ファイルは何も影響を受けません。元のファイルが変更された場合、これらの変更はジオデータベースのアタッチメントに自動では反映されません。ジオデータベースに対して変更を同期するには、[アタッチメントの削除(Remove Attachments)] ツールを使用して影響を受けるアタッチメントを削除し、変更されたファイルを新しいアタッチメントとしてもう一度追加します。
追加するアタッチメントのパスを表すフィールドが [入力データセット] にすでに含まれているときに、別の [照合テーブル] を使用しない場合は、[入力データセット] と [照合テーブル] の両方に同じデータセットを指定します。ツールは両方の結合フィールドの Object ID フィールドを自動的に選択し、入力のどのフィールドにアタッチメント ファイルのパスが含まれているかを指定することができます。
-
1 つのフィーチャクラスまたはテーブルのレコードに、複数のファイルをアタッチすることができます。この場合は、その入力 ID に対して [照合テーブル] に複数のレコードを含めるようにします(たとえば、レコード 1 では InputID を 1、パス名を pic1a.jpg とし、レコード 2 では InputID を 1、パス名を pic1b.jpg とします)。
構文
パラメータ | 説明 | データ タイプ |
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 |
コードのサンプル
次のコード スニペットは、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(アタッチメントの追加)ツールを使用する方法を示しています。
"""
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
import sys
input = r"C:\Data\City.gdb\Parcels"
inputField = "ParcelID"
matchTable = r"C:\Data\matchtable.csv"
matchField = "ParcelID"
pathField = "Picture"
picFolder = r"C:\Pictures"
try:
# 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)
except:
print arcpy.GetMessages(2)