アタッチメントの削除(Remove Attachments) (データ管理)
サマリ
ジオデータベース フィーチャクラスまたはテーブルのレコードからアタッチメントを削除します。アタッチメントは実際には入力データセットに格納されていないため、フィーチャクラスまたはテーブルに対する変更は発生しません。変更は、アタッチメントを格納して入力データセットとのリンクを管理している関連ジオデータベース テーブルに対して行われます。アタッチメントが削除される入力レコード(またはレコードの属性グループ)を識別するには、照合テーブルを使用します。
図
使用法
-
このツールを使用する以外の方法として、[入力データセット] と同じジオデータベースにある InputDataset__ATTACH テーブルから選択したレコードを削除する方法があります。このテーブルはアタッチメントを格納し、[入力データセット] へのリンクを管理しています。
構文
パラメータ | 説明 | データ タイプ |
in_dataset |
アタッチメントを削除するジオデータベース テーブルまたはフィーチャクラス。アタッチメントは直接このテーブルから削除されるのではなく、アタッチメントを格納している関連アタッチメント テーブルから削除されます。[入力データセット] はバージョン 10 以降のジオデータベースに格納されている必要があります。また、テーブルでアタッチメントが有効になっている必要もあります。 | Table View |
in_join_field |
[照合結合フィールド] の値に一致する値を含む入力データセットのフィールド。[入力データセット] と [照合テーブル] の間で一致する結合フィールド値を持つレコードからアタッチメントが削除されます。このフィールドには、Object ID フィールドまたはその他の個別属性を指定できます。 | Field |
in_match_table |
アタッチメントを削除する入力レコードを識別するテーブル。 | Table View |
in_match_join_field |
指定したアタッチメントを削除する [入力データセット] 内のレコードを識別する照合テーブルのフィールド。このフィールドには、[入力データセット] の Object ID やその他の個別属性に一致する値を指定できます。 | Field |
in_match_name_field (オプション) |
[入力データセット] のレコードから削除するアタッチメントの名前を保持する照合テーブルのフィールド。名前フィールドを指定しない場合は、[照合結合フィールド] で指定した各レコードからすべてのアタッチメントが削除されます。名前フィールドが指定されていても、レコードの名前フィールドに NULL または空の値が含まれている場合は、そのレコードからすべてのアタッチメントが削除されます。このフィールドの値には、元のアタッチメントを作成するために使用したファイルの絶対パスではなく、削除するアタッチメントの短い名前を指定します。 | Field |
コードのサンプル
次のコード スニペットは、Python ウィンドウで RemoveAttachments(アタッチメントの削除)ツールを使用する方法を示しています。
import arcpy
arcpy.RemoveAttachments_management(r"C:\Data\City.gdb\Parcels", "ParcelID", r"C:\Data\matchtable.csv", "ParcelID","Picture")
次のスクリプトは、スタンドアロン スクリプトで RemoveAttachments(アタッチメントの削除)ツールを使用する方法を示しています。
## Some of the attachments we added to a feature class are unnecessary, let's remove them.
import csv, arcpy, os, sys
input = r"C:\Data\City.gdb\Parcels"
inputField = "ParcelID"
matchTable = r"C:\Data\matchtable.csv"
matchField = "ParcelID"
nameField = "Picture"
# create a new Match Table csv file that will tell the RemoveAttachments tool which attachments to delete
writer = csv.writer(open(matchTable, "wb"), delimiter=",")
# write a header row (the table will have two columns: ParcelID and Picture)
writer.writerow([matchField, nameField])
# create a list of the attachments to delete
# removes attachments pic1a.jpg and pic1b.jpg from feature 1, pic3.jpg from feature 3, and pic4.jpg from feature 4.
deleteList = [[1, "pic1a.jpg"], [1, "pic1b.jpg"], [3, "pic3.jpg"], [4, "pic4.jpg"]]
# iterate through the delete list and write it to the Match Table csv
for row in deleteList:
writer.writerow(row)
del writer
# use the match table with the Remove Attachments tool
arcpy.RemoveAttachments_management(input, inputField, matchTable, matchField, nameField)