Esportare funzionalità con allegati da utilizzare all'esterno di ArcGIS?


14

ArcGIS 10 offre la nuova possibilità di aggiungere allegati alle singole funzionalità alle classi di funzioni archiviate in un geodatabase. Un uso di questo sarebbe quello di aggiungere più immagini in una posizione specifica, gli idranti sembrano essere un esempio popolare (è importante sapere se sei un cane su Internet che ha bisogno di un pit stop, suppongo).

Nel database la struttura di una feature class abilitata per gli allegati è triplice:

  • la classe caratteristica stessa,
  • una tabella contenente gli allegati e i metadati associati (nome file, dimensione, ecc.) e
  • una classe di relazione che definisce la relazione 1 a molti tra i due.

i 3 elementi che comprendono una classe caratteristica abilitata per gli allegati

La mia domanda è: come esportare questi dati - classe di funzionalità, allegati, metadati degli allegati - per il consumo al di fuori di Arcgis? *

L'esportazione dell'FC è semplice, FeatureClassToFeatureClass funziona come su un FC abilitato senza allegato. Esportare la tabella degli allegati? Non così tanto. TableToTable su output.dbf estrae solo i metadati del file allegato, su output.csv errori con tipo di campo non supportato e per l'output della tabella di informazioni non riesce con un errore di campo generale.

Questo non è poi così sorprendente poiché quei tipi di file non supportano un tipo di dati BLOB binario. Mi aspettavo / speravo di trovare uno strumento che potesse convertire i file binari allegati nel loro formato nativo, ad es

diagramma da tabella a file system

Allora, che ne dici? Cosa devo fare per ottenere i dati?

* ironicamente, il mio progetto del momento che ha generato questa Q è di esportare per l'uso in Arcgis, ma non in Arcgis Desktop ...

Risposte:


4

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

Per 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

grazie ian! Funziona, ma è davvero solo un punto di partenza per una soluzione reale. I file esportati vengono semplicemente scaricati in una cartella comune, perdendo la relazione con il record di origine. Nei commenti è stato descritto un metodo per utilizzare Record_ID come nome file; troppo tortuoso per me e non ha adattato più allegati, ma è meglio del valore predefinito.
matt wilkie,


3

L'esportazione di GDB in XML (facendo clic con il tasto destro su GDB> Esporta in XML) può perfettamente esportare funzionalità + allegati. Inoltre, se stai cercando un approccio più automatizzato, ArcGIS 10.1 offre una nuova cassetta degli attrezzi per l'esportazione XML. Puoi importare XML in nuovi GDB o accedere direttamente a tutti i suoi dati analizzandolo per altre applicazioni.


1
Questo approccio sembra intrigante, tuttavia non ho strumenti (non credo) in grado di utilizzare neanche il .xml. Quindi scambierei solo un formato opaco con un altro. Tuttavia, almeno con .xml esiste il potenziale per l'accesso e il riutilizzo. Esplorerò questo percorso quando avremo distribuito 10.1.
Matt Wilkie,

2

Non ho provato i metodi successivi, quindi solo i miei pensieri al riguardo:

Se si è a proprio agio con l'API ArcGIS .NET, è possibile utilizzare C # per esportare BLOB in file. Dai un'occhiata a questo frammento .

Inoltre, puoi provare a esportare la tabella degli allegati in GDB personale e quindi provare ad esportare BLOB lì. Allo stesso modo è possibile esportare nella tabella SDE e utilizzare DBMS (sql?) Per eseguirlo.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.