Exportieren von Features mit Anhängen zur Verwendung außerhalb von ArcGIS?

13

ArcGIS 10 bietet die neue Möglichkeit, Anlagen zu einzelnen Features zu Feature-Classes hinzuzufügen, die in einer Geodatabase gespeichert sind. Eine Verwendung davon wäre, mehrere Bilder an einem bestimmten Ort hinzuzufügen. Hydranten scheinen ein beliebtes Beispiel zu sein (wichtig zu wissen, ob Sie ein Hund im Internet sind, der einen Boxenstopp benötigt, nehme ich an).

In der Datenbank ist die Struktur einer für Anhänge aktivierten Feature-Class dreifach:

  • die Feature-Class selbst,
  • eine Tabelle mit den Anhängen und den zugehörigen Metadaten (Dateiname, Größe usw.) und
  • eine Beziehungsklasse, die die 1-zu-viele-Beziehung zwischen den beiden definiert.

Die 3 Elemente, aus denen eine anlagenaktivierte Feature-Class besteht

Meine Frage lautet: Wie exportiere ich diese Daten - Feature-Class, Anhänge, Anhang-Metadaten - für die Verwendung außerhalb von Arcgis? *

Das Exportieren der FC ist einfach, FeatureClassToFeatureClass funktioniert genauso wie bei einer FC ohne aktivierten Anhang. Anhangstabelle exportieren? Nicht so viel. TableToTable zu output.dbf extrahiert die angehängte Datei - Metadaten nur auf output.csv Fehler heraus mit nicht unterstütztem Feldtyp, und zur Ausgabe von Informationen Tabelle mit einem allgemeinen Feld Fehlern fehlschlägt.

Dies ist nicht allzu überraschend, da diese Dateitypen keinen binären Blob-Datentyp unterstützen. Ich hatte erwartet / gehofft, ein Tool zu finden, das die angehängten Binärdateien in ihr natives Format konvertiert, z

Diagramm von Tabelle zu Dateisystem

Also, wie wäre es damit? Was muss ich tun, um die Daten herauszubekommen?

* Ironischerweise ist mein aktuelles Projekt, das dieses Q hervorgebracht hat, der Export zur Verwendung in Arcgis, nur nicht in Arcgis Desktop ...

Matt Wilkie
quelle

Antworten:

4

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

Für 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
ianbroad
quelle
Danke Ian! Dies funktioniert, ist jedoch nur ein Ausgangspunkt für eine echte Lösung. Die exportierten Dateien werden einfach in einem gemeinsamen Ordner abgelegt, wodurch die Beziehung zum Quelldatensatz verloren geht. In Kommentaren wird eine Methode beschrieben, mit der Record_ID als Dateiname verwendet wird. Für mich zu umständlich und bietet keinen Platz für mehrere Anhänge, ist aber besser als die Standardeinstellung.
Matt Wilkie
Weitere Ressourcen zur Unterstützung eines Python-Ansatzes: * forums.arcgis.com/threads/… * gist.github.com/oevans/6992139 * github.com/bgeomapping/arcgis-rest-toolbox
matt wilkie
3

Durch Exportieren von GDB nach XML (durch Klicken mit der rechten Maustaste auf GDB> Nach XML exportieren) können Features und Anhänge perfekt exportiert werden. Wenn Sie einen automatisierten Ansatz suchen, bietet ArcGIS 10.1 eine neue Toolbox für den XML-Export. Sie können XML in neue GDBs importieren oder direkt auf alle Daten zugreifen, indem Sie sie für andere Anwendungen analysieren.

Mojtaba Karami
quelle
1
Dieser Ansatz klingt faszinierend, aber ich habe keine Tools (glaube ich nicht), die auch die .xml-Datei verwenden könnten. Also würde ich nur ein undurchsichtiges Format gegen ein anderes tauschen. Zumindest bei .xml besteht jedoch die Möglichkeit des Zugriffs und der Wiederverwendung. Ich werde diesen Pfad untersuchen, wenn 10.1 bereitgestellt wird.
Matt Wilkie
2

Ich habe die nächsten Methoden nicht ausprobiert, also nur meine Gedanken dazu:

Wenn Sie mit der ArcGIS .NET-API vertraut sind, können Sie mit C # Blobs in Dateien exportieren. Schauen Sie sich diesen Ausschnitt an .

Möglicherweise können Sie auch versuchen, die Anhangstabelle in Personal GDB zu exportieren und dann dort Blobs zu exportieren. Genauso können Sie in eine SDE-Tabelle exportieren und mit Ihrem DBMS (sql?) Ausführen.

Alex Markov
quelle