导出带有附件的特征以在ArcGIS之外使用?


14

ArcGIS 10具有新增功能,可将附件添加到单个要素以添加到地理数据库中存储的要素类。这样做的一种用途是将多个图片添加到一个特定的位置,消火栓似乎是一个受欢迎的例子(重要的是,我想知道您是否是互联网上的狗,需要进站。)

在数据库中,启用附件的要素类的结构是双重的:

  • 要素类本身,
  • 一个包含附件和相关元数据(文件名,大小等)的表,以及
  • 定义两者之间的一对多关系的关系类。

构成启用附件的要素类的3个项目

我的问题是:如何导出这些数据(要素类,附件,附件元数据)以 Arcgis 之外使用?

导出FC很容易,FeatureClassToFeatureClass的工作原理与未启用附件的FC相同。导出附件表?没那么多。TableToTable到output.dbf提取附加文件的元数据而已,到output.csv错误了不支持的字段类型,并输出信息表失败,一般字段错误。

这并不奇怪,因为那些文件类型不支持二进制blob数据类型。我期望/希望找到一种将附加的二进制文件转换为其原始格式的工具,例如

表到文件系统图

那么,如何呢?我需要怎么做才能取出数据?

* 具有讽刺意味的是,我当时产生此Q的项目是导出以在Arcgis中使用,而不是在Arcgis Desktop中使用...

Answers:


4

http://support.esri.com/em/knowledgebase/techarticles/detail/41763

对于ArcGIS 10.1+

from arcpy import da
import os

inTable = arcpy.GetParameterAsText(0)
fileLocation = arcpy.GetParameterAsText(1)

with da.SearchCursor(inTable,['DATA','ATT_NAME']) as cursor:
   for row in cursor:
      binaryRep = row[0]
      fileName = row[1]
      # save to disk
      open(fileLocation + os.sep + fileName, 'wb').write(binaryRep.tobytes())
      del row
      del binaryRep
      del fileName

谢谢伊恩!这是可行的,但实际上只是一个真正解决方案的起点。导出的文件仅被转储到公共文件夹中,从而失去了与源记录的关系。在注释中,描述了一种使用Record_ID作为文件名的方法。对我来说太circuit回,并且无法容纳多个附件,但是它比默认附件好。
马特·威尔基2014年


3

将GDB导出为XML(通过右键单击GDB>导出为XML)可以完美地导出功能和附件。此外,如果您正在寻找一种更自动化的方法,则ArcGIS 10.1会提供一个用于XML导出的新工具箱。您可以将XML导入新的GDB或通过解析其他应用程序来直接访问其所有数据。


1
这种方法听起来很吸引人,但是我没有任何能够使用.xml的工具(我不认为)。所以我只是将一种不透明格式换成另一种。但是至少有.XML有潜力的访问和再利用。当我们部署10.1时,我将探索这个路径。
马特·威尔基

2

我还没有尝试过下一种方法,所以只是我的想法:

如果方便使用ArcGIS .NET API,则可以使用C#将Blob导出到文件中。看看这个片段

也可能是您可以尝试将附件表导出到Personal GDB,然后尝试在那里导出Blob。您可以以相同的方式导出到SDE表并使用DBMS(sql?)来执行它。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.