移除附件 (数据管理)

摘要

从地理数据库要素类或表记录中移除附件。

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

了解有关使用“附件”地理处理工具的详细信息

插图

移除附件工具图示

使用情况

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

  • 此工具支持将 ArcGIS Enterprise 托管要素图层作为输入。

参数

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

要从中移除附件的地理数据库表或要素类。 不会直接从此表中移除附件,而是从存储附件的关联附件表中移除。 数据集必须启用附件。

Table View
输入连接字段

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

Field
匹配表

标识将从中移除附件的输入记录的表。

Table View
匹配连接字段

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

Field
匹配名称字段
(可选)

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

Field

派生输出

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

已更新的输入数据集。

Table View

arcpy.management.RemoveAttachments(in_dataset, in_join_field, in_match_table, in_match_join_field, {in_match_name_field})
名称说明数据类型
in_dataset

要从中移除附件的地理数据库表或要素类。 不会直接从此表中移除附件,而是从存储附件的关联附件表中移除。 数据集必须启用附件。

Table View
in_join_field

in_dataset 参数值中的字段,其中包含与 in_match_join_field 参数值中的值匹配的值。 in_dataset 参数值和 in_match_table 参数值之间的连接字段值匹配的记录将移除附件。 该字段可以是“Object ID”字段或其他任何标识属性。

Field
in_match_table

标识将从中移除附件的输入记录的表。

Table View
in_match_join_field

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

Field
in_match_name_field
(可选)

匹配表中的字段,包含要从 in_dataset 参数值记录中移除的附件的名称。 如果未指定名称字段,则会从 in_match_join_field 参数值指定的每条记录中移除所有附件。 如果指定了名称字段,但是记录的名称字段值为 null 或为空,则将从该记录中移除所有附件。 此字段的值应为要移除的附件的简称,而不是用于制作原始附件的文件的完整路径。

Field

派生输出

名称说明数据类型
out_dataset

已更新的输入数据集。

Table View

代码示例

RemoveAttachments 示例 1(Python 窗口)

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

import arcpy
arcpy.management.RemoveAttachments(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)