添加附件 (数据管理)

摘要

向地理数据库要素类或表的记录中添加文件附件。 附件以单独附件表的形式存储在地理数据库中,该表与目标数据集保持连接。 使用匹配表将附件添加到目标数据集中,该表指示了针对每个输入记录(或记录的属性组)向该记录中添加的附件文件的路径。

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

插图

“添加附件”工具图示

使用情况

  • 在可以使用该工具添加附件之前,必须使用启用附件工具启用附件。

  • 使用该工具添加的附件将被复制到地理数据库中。 原始附件文件将不会受到任何影响。 如果修改了原始文件,这些更改不会自动更新到地理数据库附件中。 要将这些更改同步到地理数据库中,请使用移除附件工具移除受影响的附件。 然后将修改的文件作为新附件重新添加。

  • 如果输入数据集参数值包含指向要添加附件的路径的现有字段,而且您不希望针对匹配表参数使用单独的值,请为输入数据集匹配表参数指定相同数据集。 工具将自动选择这两个连接字段的对象 ID 字段,而且您可以指定输入的哪个字段包含附件文件的路径。

  • 多个文件可作为一个要素类或表记录的附件。 要实现这一功能,请确保匹配表参数值包含该输入 ID 的多条记录。 例如,记录 1 的输入 ID 为 1 且路径名为 pic1a.jpg,记录 2 的输入 ID 为 1 且路径名为 pic1b.jpg

参数

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

将添加附件的地理数据库表或要素类。 不会将附件直接添加至该表,而是将其添加至关联的附件表,该附件表保持与输入数据集的连接。

数据集必须存储在 10.0 或更高版本的地理数据库中,而且表的附件必须已经启用。

Table View
输入连接字段

输入数据集参数值中的字段,该字段在匹配连接字段参数值中具有匹配的值。 具有匹配值的记录将添加附件。 该字段可以是“Object ID”字段或其他任何标识属性。

Field
匹配表

一个表格,用于标识将添加附件的输入记录以及这些附件的路径。

Table View
匹配连接字段

匹配表参数值中的字段,用于指示输入数据集参数值中将添加指定附件的记录。

Field
匹配路径字段

匹配表参数值中的字段,包含要添加至输入数据集参数值的记录的附件路径。

in_match_table 参数值中的字段,包含要添加至 in_dataset 参数值的记录的附件路径。

Field
工作文件夹
(可选)

集中存放附件文件的文件夹或工作空间。 通过指定工作文件夹,匹配路径字段参数值中的路径可以是相对于工作文件夹的短文件名称。

例如,如果加载路径为 C:\MyPictures\image1.jpgC:\MyPictures\image2.jpg 的附件,请使用参数值 C:\MyPictures匹配路径字段参数值中的路径可以为短名称,例如 image1.jpgimage2.jpg,而非完整路径。

Folder

派生输出

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

已更新的输入数据集。

Table View

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

in_dataset 参数值中的字段,该字段在 in_match_join_field 参数值中具有匹配的值。 具有匹配值的记录将添加附件。 该字段可以是“Object ID”字段或其他任何标识属性。

Field
in_match_table

一个表格,用于标识将添加附件的输入记录以及这些附件的路径。

Table View
in_match_join_field

in_match_table 参数值中的字段,用于指示 in_dataset 参数值中将添加指定附件的记录。

Field
in_match_path_field

匹配表参数值中的字段,包含要添加至输入数据集参数值的记录的附件路径。

in_match_table 参数值中的字段,包含要添加至 in_dataset 参数值的记录的附件路径。

Field
in_working_folder
(可选)

集中存放附件文件的文件夹或工作空间。 通过指定工作文件夹,in_match_path_field 参数值中的路径可以是相对于工作文件夹的短文件名称。

例如,如果加载路径为 C:\MyPictures\image1.jpgC:\MyPictures\image2.jpg 的附件,请使用参数值 C:\MyPicturesin_match_path_field 参数值中的路径可以为短名称,例如 image1.jpgimage2.jpg,而非完整路径。

Folder

派生输出

名称说明数据类型
out_dataset

已更新的输入数据集。

Table View

代码示例

AddAttachments 示例 1(Python 窗口)

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

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

以下脚本演示了如何在独立脚本中使用 AddAttachments 函数。

"""
Example: You have a folder of digital photographs of vacant homes; the photos
are named according to the ParcelID of the house in the picture. Add
these photos to a parcel feature class as attachments.
"""

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 Match Table csv file
with open(matchTable, "w") as csv:
    # write a header row (the table will have two columns: ParcelID and Picture)
    csv.write(f"{matchField},{pathField}\n")
    
    # Iterate through each picture in the directory and write a row to the table
    for file in os.listdir(picFolder):
        if file.find(".jpg") > -1:
            csv.write(f"{file.replace('.jpg', '')},{file}\n")

# The input feature class must first have GDB attachments enabled
arcpy.management.EnableAttachments(input)

# Use the match table with the Add Attachments tool
arcpy.management.AddAttachments(input, inputField, matchTable, matchField, 
                                pathField, picFolder)