¿Exportar entidades con archivos adjuntos para usar fuera de ArcGIS?

14

ArcGIS 10 presenta la nueva capacidad de agregar archivos adjuntos a entidades individuales a clases de entidad almacenadas en una geodatabase. Un uso de esto sería agregar varias imágenes a una ubicación específica, las bocas de incendio parecen ser un ejemplo popular (es importante saber si eres un perro en Internet que necesita una parada en boxes, supongo).

En la base de datos, la estructura de una clase de entidad habilitada para adjuntos es triple:

  • la clase de entidad en sí,
  • una tabla que contiene los archivos adjuntos y los metadatos asociados (nombre de archivo, tamaño, etc.), y
  • una clase de relación que define la relación de 1 a muchos entre los dos.

los 3 elementos que comprenden una clase de entidad habilitada para archivos adjuntos

Mi pregunta es: ¿cómo exportar estos datos (clase de entidad, archivos adjuntos, metadatos de archivos adjuntos) para consumo fuera de Arcgis? *

Exportar el FC es fácil, FeatureClassToFeatureClass funciona igual que en un FC sin archivos adjuntos habilitados. ¿Exportar la tabla de archivos adjuntos? No tanto. TableToTable to output.dbf extrae solo los metadatos del archivo adjunto, los errores de output.csv se eliminan con un tipo de campo no compatible y la tabla de información de salida falla con un error de campo general.

Esto no es tan sorprendente, ya que esos tipos de archivos no admiten un tipo de datos de blob binario. Esperaba / esperaba encontrar una herramienta que convirtiera los binarios adjuntos a su formato nativo, por ejemplo

diagrama del sistema de tabla a archivo

Entonces, ¿qué tal? ¿Qué debo hacer para obtener los datos?

* Irónicamente, mi proyecto del momento que generó esta Q es exportar para usar dentro de Arcgis, solo que no Arcgis Desktop ...

wilkie mate
fuente

Respuestas:

4

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

Para 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
fuente
gracias ian! Esto funciona, pero en realidad es solo un punto de partida para una solución real. Los archivos exportados se vuelcan en una carpeta común, perdiendo la relación con el registro de origen. En los comentarios hay un método descrito para usar Record_ID como nombre de archivo; demasiado tortuoso para mí y no admite múltiples archivos adjuntos, pero es mejor que el predeterminado.
Matt Wilkie
Algunos recursos más para ayudar con un enfoque de Python: * forums.arcgis.com/threads/… * gist.github.com/oevans/6992139 * github.com/bgeomapping/arcgis-rest-toolbox
matt wilkie
3

Exportar GDB a XML (haciendo clic con el botón derecho en GDB> Exportar a XML) puede exportar perfectamente funciones + archivos adjuntos. Además, si está buscando un enfoque más automatizado, ArcGIS 10.1 presenta una nueva caja de herramientas para la exportación de XML. Puede importar XML en nuevos GDB o acceder directamente a todos sus datos analizándolos para otras aplicaciones.

Mojtaba Karami
fuente
1
Este enfoque suena intrigante, sin embargo, no tengo ninguna herramienta (no creo) que pueda usar el .xml tampoco. Entonces, solo estaría cambiando un formato opaco por otro. Sin embargo, al menos con .xml hay posibilidades de acceso y reutilización. Exploraré este camino cuando tengamos implementado 10.1.
Matt Wilkie
2

No he probado los siguientes métodos, así que solo pienso en ello:

Si es conveniente con ArcGIS .NET API, puede usar C # para exportar blobs a archivos. Echa un vistazo a este fragmento .

También puede intentar exportar la tabla de archivos adjuntos a Personal GDB y luego intentar exportar blobs allí. De la misma manera que puede exportar a la tabla SDE y usar su DBMS (sql?) Para realizarlo.

Alex Markov
fuente