导出附件工具箱

3883
10
06-25-2021 02:33 am
UriGilad_EsriAu
Esri贡献者
21 10 3883年

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

如果你喜欢这个工具箱,如果你给点赞,我会很感激的。谢谢!: thumbs_up:

背景

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

方法可以将附件批量上传到特性类添加附件工具,特征类中现有附件的管理是有限的:

  • 单个附件只能在专用的应用程序中查看,例如Survey123在线数据查看器,或在web地图、应用程序和ArcGIS Pro中配置弹出窗口。
  • 可以通过FME等外部软件批量下载附件设置有限的脚本必须分别应用到与特性类相关的每个附件表。如果该层在AGOL上,则需要手动下载数据。
  • 大型或多个附件会迅速增加功能类的大小,使其体积庞大且响应性较差。
  • 附件的备份和共享非常麻烦,因为附件“隐藏”在功能类中,只能通过GIS平台方便地访问。

因此,许多用户需要一个专用的工具,该工具允许将附件从特性服务简单地导出到本地文件夹,以便对它们进行独立管理。

导出附件工具箱

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

工具

工具箱有三个工具:

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

分组的附件

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

用户必须按照在特性类中显示的方式输入指定的组名。如果在特征类中没有找到组名,附件将被下载到名为“No group Assigned”的文件夹中。

前缀的选项

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

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

工具箱和脚本

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

技术因素

阿戈尔/门户访问

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

如果您的门户有一个代理,您将需要为该工具提供代理主机名和端口号。

环境

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

使用条款

支持和升级

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

Uri Gilad于2021年6月25日出版

10评论
MehdiPira1
通过 Esri贡献者
Esri贡献者

好了!非常有用的@UriGilad_EsriAu

CatherineCallahan
新的因素

谢谢分享这个工具箱@UriGilad_EsriAu

Bnewell
通过
新的因素

谢谢@UriGilad_EsriAu,这是非常有用的!

Ursu_Lacramioara
新贡献者II

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

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

任何想法?

ursu_lacramioara_0 - 1647625872933. - png

谢谢

Lacri

UriGilad_EsriAu
Esri贡献者

嗨Larci,

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

欢呼,

Uri

benjamin_green
新的因素

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

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

NameError:名字“重新”定义

经过对Stack Overflow的一些研究(链接到相关文章)在这里),我找到了解决方案。你需要导入正则表达式模块在此工具的代码中。在导入模块时将它添加到第一个代码块中就可以了。

进口再保险

希望这对其他可能遇到这个问题的人有所帮助。欢呼。

JoeBryant1
通过
临时贡献者II
这个工具可能太棒了,如果我能找出这个错误:
开始时间:2022年8月18日星期四下午4:21:26
['Asset_Inventory__ATTACH', ['{83455E31-D2A8-49FC-80B3-B0398D23545D}', '{83455E31-D2A8-49FC-80B3-B0398D23545D}', '001南科迪利亚1区泵站'],['{83455E31-D2A8-49FC-80B3-B0398D23545D}', '{83455E31-D2A8-49FC-80B3-B0398D23545D}', '{83455E31-D2A8-49FC-80B3-B0398D23545D}', '001南科迪利亚1区泵站']]
Traceback(最近一次调用):File "", line 173, in  NameError: name 'grouping_value' is not defined
从本地数据库导出所有附件失败…
执行失败(ExportAllAttachmentsFromLocalGDB).日志含义
Failed at Thursday, August 18, 2022 4:21:45 PM(运行时间:19.77秒
我正在使用您的“组附件由…方法,并输入了拍摄照片的设施字段。这个字段是完全填充的(没有空值),并且能够用于一些记录,但是当“分组值未定义”时,该工具似乎失败了。这可能是因为编译器没有传递不支持的字符,如'#'或'()'吗?
这个工具已经差不多了——分组方法正是(或将是)我所需要的。感谢开发这个!
JoeBryant1
通过
临时贡献者II

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

SheldonBina2
通过
新贡献者II

伟大的工具!谢谢提供!

CherieMalone
通过
新的因素

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

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