ArcGIS以外で使用するために添付ファイル付きのフィーチャをエクスポートしますか?


13

ArcGIS 10には、ジオデータベースに格納されているフィーチャクラスの個々のフィーチャ添付ファイル追加する新しい機能が備わっています。これの1つの用途は、特定の場所に複数の写真を追加することです。消火栓は人気のある例のようです(私が思うに、ピットストップが必要なインターネット上の犬であるかどうかを知ることは重要です)。

データベースでは、アタッチメント対応フィーチャクラスの構造は3つになります。

  • フィーチャクラス自体、
  • 添付ファイルと関連するメタデータ(ファイル名、サイズなど)を保持するテーブル、および
  • 2つの間の1対多の関係を定義する関係クラス。

アタッチメント対応フィーチャクラスを構成する3つのアイテム

私の質問は、このデータ(フィーチャクラス、添付ファイル、添付ファイルメタデータ)をArcgis で使用するためにエクスポートする方法ですか?*

FCのエクスポートは簡単で、FeatureClassToFeatureClassは、接続されていないFCと同じように機能します。添付ファイルのテーブルをエクスポートしますか?そんなにない。TableToTableにoutput.dbfのみを抽出し、output.csvエラーにサポートされていないフィールドタイプとアウト、および出力への添付ファイルのメタデータ情報テーブルは、一般的なフィールドのエラーで失敗します。

これらのファイルタイプはバイナリblobデータタイプをサポートしていないため、これはそれほど驚くべきことではありません。私は、添付されたバイナリをネイティブ形式に変換するツールを見つけることを期待していました。

テーブルからファイルシステムの図

それでは、どうですか?データを取得するには何をする必要がありますか?

* 皮肉なことに、このQを生み出した瞬間の私のプロジェクトは、Arcgis Desktopではなく、Arcgis内で使用するためにエクスポートすることです...

回答:


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をファイル名として使用する方法が記載されています。私にはあまりにも遠回りで、複数の添付ファイルには対応していませんが、デフォルトよりも優れています。
マットウィルキー14年

Pythonのアプローチを支援するためにいくつかのより多くのリソース:* forums.arcgis.com/threads/... * gist.github.com/oevans/6992139 * github.com/bgeomapping/arcgis-rest-toolbox
マットウィルキー

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?)を使用して実行できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.