UriGilad_EsriAu
Esri贡献者
28 12 6059年

导出附件工具箱为从AGOL/Portal上的特性服务或从本地Geodatabase导出附件到本地文件夹提供了一个简单的解决方案。Toolbox提供了各种导出选项,例如根据附件属性将导出的附件分发到多个文件夹中,在附件名称中添加前缀,以及从AGOL/Portal作为File Geodatabase下载功能服务。

如果你喜欢这个工具箱,请给我点赞。谢谢!: thumbs_up:

背景

附件,特别是照片,是空间数据捕获和管理中的常见组件。因此,可以启用Esri的功能类(在桌面环境中)和托管功能服务(在AGOL/Portal环境中)来存储与单个功能相关的附件。附件作为blob保存在相关表中,通过Relationship类指向父特性类。

方法批量上传附件到功能类是可能的添加附件工具,功能类中现有附件的管理是有限的:

  • 单个附件只能在专用的应用程序中查看,例如Survey123在线数据查看器,或在web地图,应用程序和ArcGIS Pro中配置的弹出窗口。
  • 可以通过外部软件(如FME或。)批量下载附件设置一个有限的脚本它必须单独应用于与特征类相关的每个附件表。如果层在AGOL上,则需要手动下载数据。
  • 大型或多个附件会迅速增加特征类的大小,使其变得笨重且响应速度较慢。
  • 附件的备份和共享很麻烦,因为附件“隐藏”在特征类中,并且只有通过GIS平台才能轻松访问。

因此,许多用户要求使用专用工具,方便地将附件从特性服务导出到可以独立管理的本地文件夹。

导出附件工具箱

导出附件工具箱便于从Geodatabases或AGOL/Portal托管的功能服务导出附件。

工具

这个工具箱有三个工具:

  1. 从数据库导出所有附件将FGDB或EGDB中的所有附件提取到本地文件夹中。可以为附件分配各种文件名前缀选项,例如父特性类名称、相关字段值或用户提供的文本前缀。
  2. 从本地表导出附件基于Esri支持页面,该工具从单个附件表中提取所有附件到本地文件夹。它与第一个工具类似,但一次只应用于一个表,不包括高级选项。
  3. 导出托管功能层和附件这个工具提供了几个选项:
    1. 仅FGDB:将托管的功能服务从AGOL/Portal下载到本地文件夹,作为文件地理数据库。
    2. 仅附件:将AGOL/Portal托管功能服务中的所有附件提取到本地文件夹,而无需下载托管功能服务。
    3. FGDB +附件:从AGOL/Portal下载托管功能服务,并将其所有附件提取到本地文件夹中。

分组的附件

当从地理数据库或托管功能服务下载附件时,用户可以根据相关的功能属性将附件分组到单独的文件夹中。例如,在与每个附件相关联的资产类型的资产特征类中,工具将下载文件夹x中与资产x相关的所有附件,以及文件夹y中与资产y相关的所有附件,等等。

指定的组名必须由用户以与特征类中出现的方式完全相同的方式输入。如果在feature类中没有找到组名,则附件将被下载到名为“No group Assigned”的文件夹中。

前缀的选项

下载附件时,用户可以指定一个附件前缀,该前缀将添加到附件的名称中。前缀可以是以下任意一种:

  1. 没有前缀—附件名称不添加前缀
  2. 类型前缀—用户在附件名称后添加的前缀。例如,名称中只有日期的图像可以添加fieldwork_要命名的前缀fieldwork_imagedate.jpg
  3. 组名称(仅可用于分组附件,请参阅分组的附件节获取更多信息)-组名称将作为前缀添加到附件名称。例如,如果附件按资产类型分组,则名为2020101. jpg与路灯资产类型相关的将被保存为Streetlight_20200101.jpg
  4. 组名+类型前缀(仅可用于分组附件,请参阅分组的附件节获取更多信息)。组名将作为前缀添加到附件名称中,用户的前缀将紧随其后。例如,名为2020101. jpg与路灯资产类型相关,用户前缀为_fieldwork_将被保存为Streetlight_fieldwork_20200101.jpg
  5. 相关特性类名-包含附件的功能类的名称将作为前缀添加。例如,如果父层名称为Brisbane_Assets附件是20200101. jpg附件将保存为Brisbane_Assets_20200101.jpg。

工具箱和脚本

在这个博客中附上了一个嵌入脚本的工具箱版本(“导入”)。要查看脚本,请在Pro中右键单击脚本并单击“编辑”。

技术因素

阿戈尔/门户访问

要使用导出托管功能层和附件工具,确保您有适当的权限从AGOL/Portal下载托管的功能服务或附件。如果您无法在AGOL的服务概述页面中看到“导出”按钮,则无法使用该工具下载该工具。

如果您的Portal有代理,则需要向该工具提供代理主机名和端口号。

环境

该工具箱是在ArcGIS Pro 2.6.3 / Python 3.6.10环境中创建的。为获得最佳效果,请在类似或升级后的环境中运行这些工具。使用以前的版本,特别是Python 2版本,可能会导致工具箱遇到错误。

使用条款

支持和升级

这个工具箱不是Esri的官方工具箱因此,它不被支持或更新。

Uri Gilad, 2021年6月25日出版

标签(6)
评论
MehdiPira1
Esri贡献者
Esri贡献者

好了!非常有用的@UriGilad_EsriAu

CatherineCallahan
新的因素

感谢分享这个工具箱@UriGilad_EsriAu

Bnewell
新的因素

谢谢@UriGilad_EsriAu,这很有帮助!

Ursu_Lacramioara
新贡献者III

你好Uri -我正试图使用你的脚本,但我得到一个错误与我正在使用的AGOL门户。

如果我采取/0从托管然后门户是好的,但当我使用/0然后门户给出了一个错误。

任何想法?

ursu_lacramioara_0 - 1647625872933. - png

谢谢

Lacri

UriGilad_EsriAu
Esri贡献者
Esri贡献者

嗨Larci,

托管项目ID您只需要插入32个字符的代码,而不是整个URL。

欢呼,

Uri

benjamin_green
新的因素

我发现这个工具箱在从Survey123下载照片附件时非常有用。谢谢你!

在导出附件时,我最初遇到了一些困难。我收到一条错误信息:

NameError:名字“重新”定义

经过对堆栈溢出的一些研究(链接到相关文章)在这里),我找到了解决办法。您需要导入正则表达式模块在此工具的代码中。将它添加到导入模块时的第一个代码块中就能达到目的。

进口再保险

希望这有助于任何人谁可能会遇到这个问题。欢呼。

JoeBryant1
临时贡献者III
这个工具可能如果我能找出这个错误,那就太棒了:
开始时间:2022年8月18日(星期四)下午4:21:26
['Asset_Inventory__ATTACH', ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' ' ' ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' ' ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' ' '{83455E31-D2A8-49FC-80B3-B0398D23545D}', ' '001南科迪利亚一区泵站']]]
回溯(最近一次调用最后一次):<模块>中的文件"",第173行NameError: name 'grouping_value'未定义
脚本从本地数据库导出所有附件失败…
日志含义执行ExportAllAttachmentsFromLocalGDB失败。
在2022年8月18日星期四下午4:21:45失败(运行时间:19.77秒)
我正在使用你的“Group Attachments By…”方法,并为拍摄照片的设施输入一个字段。这个字段被完全填充(没有空值),并且能够用于一些记录,但是当“分组值未定义”时,该工具似乎失败了。这可能是因为不支持的字符,如'#'或'()'没有被编译器传递?
这个工具几乎就在那里-分组方法正是(或将是)我所需要的。谢谢你开发这个!
JoeBryant1
临时贡献者III

更新:我发现我正在使用的分组字段有一个编码的值域,即使它显示了描述。编码值也是文本,但它们以数字开头,我认为这是Windows文件夹名称的禁忌。我计算解码后的字符串值到一个新字段,并使用该字段进行分组,工具成功运行。

SheldonBina2
新贡献者II

伟大的工具!感谢提供!

CherieMalone
新的因素

嗨Uri !很棒的工具,谢谢: slightly_smiling_face:

是否有一种方法可以导出所选的记录或基于托管功能层的特定属性的记录?

MattRummel
新贡献者II

无法在ArcGIS Pro 3.0中工作。一直返回错误:

回溯(最近一次调用):
文件"",第151行,在
RuntimeError:指定的列不存在。

LaineyLe_Blanc1
新贡献者II

如果有一个选项可以将附件名称的前缀设置为Global ID,这样就可以将下载的图片和数据点关联起来,那就太好了。我在这个工具的旧版本中看到,您可以将Feature ID设置为相关的表ID以导出附件,如本教程所示https://www.youtube.com/watch?v=Fw1K8rmV8O4