移除附件 (数据管理)

摘要

从地理数据库要素类或表记录中移除附件。由于附件实际并未存储在输入数据集中,因此不会对该要素类或表进行任何更改,但是会对存储附件和保持与输入数据集的连接的关联地理数据库表进行更改。匹配表用于标识哪些输入记录(或记录的属性组)将移除附件。

插图

移除附件图示

使用情况

  • 如果不使用此工具,可选择另一种方式,即从与输入数据集相同的地理数据库的 InputDataset__ATTACH 表(用于存储附件和保持与输入数据集的连接)中删除所选记录。

参数

标注说明数据类型
输入数据集

要从中移除附件的地理数据库表或要素类。不会直接从此表中移除附件,而是从存储附件的关联附件表中移除。输入数据集必须存储在 10.0 或更高版本的地理数据库中,而且表的附件必须已经启用。

Table View
输入连接字段

“输入数据集”中的字段,其值与匹配连接字段中的值相匹配。输入数据集匹配表之间的连接字段值匹配的记录将移除附件。该字段可以是“Object ID”字段或其他任何标识属性。

Field
匹配表

确定哪些输入记录将移除附件的表。

Table View
匹配连接字段

匹配表中的字段,指示输入数据集中的哪些记录将移除指定附件。该字段的值可与输入数据集“Object ID”或某些其他标识属性相匹配。

Field
匹配名称字段
(可选)

匹配表中的字段,包含要从输入数据集记录中移除的附件的名称。如果未指定名称字段,则会从匹配连接字段指定的每条记录中移除所有附件。如果指定了名称字段,但是记录的名称字段值为 null 或为空,则将从该记录中移除所有附件。此字段的值应该为要移除的附件的名称缩写,而不是用于创建原始附件的文件的完整路径。

Field

派生输出

标注说明数据类型
更新的输入数据集

已更新的输入数据集。

表视图

arcpy.management.RemoveAttachments(in_dataset, in_join_field, in_match_table, in_match_join_field, {in_match_name_field})
名称说明数据类型
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_name_field
(可选)

匹配表中的字段,包含要从输入数据集记录中移除的附件的名称。如果未指定名称字段,则会从匹配连接字段指定的每条记录中移除所有附件。如果指定了名称字段,但是记录的名称字段值为 null 或为空,则将从该记录中移除所有附件。此字段的值应该为要移除的附件的名称缩写,而不是用于创建原始附件的文件的完整路径。

Field

派生输出

名称说明数据类型
out_dataset

已更新的输入数据集。

表视图

代码示例

RemoveAttachments 示例 1(Python 窗口)

以下代码片段说明了如何在 Python 窗口中使用 RemoveAttachments 工具。

import arcpy
arcpy.RemoveAttachments_management(r"C:\Data\City.gdb\Parcels", "ParcelID", 
                                   r"C:\Data\matchtable.csv", "ParcelID", 
                                   "Picture")
RemoveAttachments 示例 2(独立脚本)

以下脚本说明了如何在独立脚本中使用 RemoveAttachments 工具。

# Delete unnecessary attachments from a feature class
import arcpy
import csv
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)

环境

特殊情况

许可信息

  • Basic: 否
  • Standard: 是
  • Advanced: 是

相关主题