Експорт функцій із вкладеннями для використання поза ArcGIS?


14

ArcGIS 10 пропонує нову можливість додавання вкладень до окремих функцій до класів функцій, що зберігаються в базі даних геоданих. Одним із застосувань цього може бути додавання декількох знімків до певного місця, пожежні гідранти здаються популярним прикладом (важливо знати, чи ви собака в Інтернеті, яка потребує піт-стопу).

У базі даних структура класу функцій, що підтримується вкладенням, є потрійною:

  • сам клас функцій,
  • таблицю, що містить вкладені файли та пов’язані з ними метадані (ім'я файлу, розмір тощо) та
  • клас відносин, що визначає відносини 1 до багатьох між ними.

3 елементи, що містять вкладений клас функцій

Моє запитання: як експортувати ці дані - клас об’єктів , вкладення, метадані вкладення - для споживання за межами Arcgis? *

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

Це не все так дивно, оскільки ці типи файлів не підтримують тип даних бінарного блобу. Я очікував / сподівався знайти інструмент, який перетворив би додані бінарні файли у свій власний формат, наприклад

таблиця до файлової системної схеми

Отже, як щодо цього? Що мені потрібно зробити, щоб отримати дані?

* За іронією долі, мій проект моменту, що породив цей Q, - це експортувати для використання в 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

дякую тобі Іане! Це працює, але насправді є лише відправною точкою до реального рішення. Експортовані файли просто скидаються у загальну папку, втрачаючи зв'язок із вихідним записом. У коментарях є метод, описаний для використання Record_ID як імені файлу; для мене занадто ланцюговий і не містить декількох вкладень, але це краще, ніж за замовчуванням.
matt wilkie

Ще кілька ресурсів, щоб допомогти з підходом python: * forums.arcgis.com/threads/… * gist.github.com/oevans/6992139 * github.com/bgeomapping/arcgis-rest-toolbox
matt wilkie

3

Експорт GDB в XML (клацанням правою кнопкою миші на GDB> Експорт у XML) може ідеально експортувати функції + вкладення. Крім того, якщо ви шукаєте більш автоматизований підхід, ArcGIS 10.1 пропонує новий інструментарій для експорту XML. Ви можете імпортувати XML у нові GDB або безпосередньо отримувати доступ до всіх його даних, аналізуючи їх для інших програм.


1
Цей підхід звучить інтригуюче, однак у мене немає інструментів (не думаю), які також могли б використовувати .xml. Тож я б просто торгував одним непрозорим форматом за іншим. Однак принаймні з .xml є потенціал для доступу та повторного використання. Я вивчу цей шлях, коли ми розгорнемо 10.1.
matt wilkie

2

Я не пробував наступних методів, тому лише міркування про це:

Якщо вам зручно з ArcGIS .NET API, ви можете використовувати C # для експорту крапок у файли. Погляньте на цей фрагмент .

Також ви можете спробувати експортувати таблицю вкладених файлів у персональний GDB, а потім спробувати експортувати там крапки. Таким же чином ви можете експортувати в таблицю SDE і використовувати для цього її СУБД (sql?).


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.