Экспорт объектов с вложениями для использования вне ArcGIS?

14

В ArcGIS 10 появилась новая возможность добавлять вложения к отдельным объектам в классы объектов, хранящиеся в базе геоданных. Одним из вариантов использования этого было бы добавление нескольких картинок в определенное место, пожарные гидранты, кажется, популярный пример (важно знать, если вы собака в Интернете, нуждающаяся в пит-стопе, я полагаю).

В базе данных структура класса объектов с включенными вложениями является тройной:

  • сам класс объектов,
  • таблица, содержащая вложения и связанные метаданные (имя файла, размер и т. д.), и
  • класс отношений, определяющий отношение «один ко многим» между ними.

3 элемента, которые составляют класс объектов с поддержкой вложений

Мой вопрос: как экспортировать эти данные - класс пространственных объектов , вложения, метаданные вложений - для использования вне Arcgis? *

Экспортировать FC легко, FeatureClassToFeatureClass работает так же, как и для FC без включенного вложения. Экспорт таблицы вложений? Не так много. TableToTable для output.dbf извлекает только метаданные вложенного файла, для вывода ошибок output.csv с неподдерживаемым типом поля, а для вывода информационной таблицы происходит сбой с общей ошибкой поля.

Это не так уж удивительно, поскольку эти типы файлов не поддерживают тип двоичного двоичного объекта. Я ожидал / надеюсь найти инструмент, который конвертирует прикрепленные двоичные файлы в их родной формат, например

диаграмма таблицы в файловую систему

Так как насчет этого? Что мне нужно сделать, чтобы получить данные?

* по иронии судьбы мой проект, который породил этот вопрос, состоит в экспорте для использования в Arcgis, но не в Arcgis Desktop ...

Мэтт Уилки
источник

Ответы:

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
ianbroad
источник
спасибо Ян! Это работает, но на самом деле является лишь отправной точкой для реального решения. Экспортированные файлы просто сбрасываются в общую папку, теряя связь с исходной записью. В комментариях описан метод использования Record_ID в качестве имени файла; слишком сложный для меня, и не поддерживает несколько вложений, но это лучше, чем по умолчанию.
Мэтт Уилки
Еще несколько ресурсов, чтобы помочь с подходом 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 # для экспорта больших двоичных объектов в файлы. Посмотрите на этот фрагмент .

Также может быть, вы можете попробовать экспортировать таблицу вложений в Personal GDB, а затем попытаться экспортировать туда BLOB-объекты. Таким же образом вы можете экспортировать в таблицу SDE и использовать свою СУБД (sql?) Для ее выполнения.

Алекс Марков
источник