Eksportujesz funkcje z załącznikami do użytku poza ArcGIS?

14

ArcGIS 10 oferuje nową możliwość dodawania załączników do poszczególnych obiektów do klas obiektów przechowywanych w geobazie. Jednym z zastosowań tego byłoby dodanie wielu zdjęć do określonej lokalizacji, hydranty przeciwpożarowe wydają się być popularnym przykładem (ważne, aby wiedzieć, czy jesteś psem w Internecie, który potrzebuje postoju).

W bazie danych struktura klasy obiektów z włączonym załącznikiem jest trojaka:

  • sama klasa obiektów,
  • tabela zawierająca załączniki i powiązane metadane (nazwa pliku, rozmiar itp.) oraz
  • klasa relacji definiująca relację 1 do wielu między nimi.

3 elementy, które zawierają klasę elementów z włączonym załącznikiem

Moje pytanie brzmi: jak wyeksportować te dane - klasę funkcji, załączniki, metadane załączników - do wykorzystania poza Arcgis? *

Eksportowanie FC jest łatwe, FeatureClassToFeatureClass działa tak samo, jak w FC bez włączonego załącznika. Eksportujesz tabelę załączników? Nie tak bardzo. TableToTable to output.dbf wyodrębnia tylko załączone metadane pliku, wyprowadza błędy output.csv z nieobsługiwanym typem pola, a tabela informacji wyjściowych kończy się niepowodzeniem z ogólnym błędem pola.

Nie jest to wcale takie zaskakujące, ponieważ te typy plików nie obsługują binarnego typu danych obiektów blob. Spodziewałem się / mam nadzieję znaleźć narzędzie, które przekonwertuje załączone pliki binarne na ich rodzimy format, np

schemat tabeli do systemu plików

A co powiesz na to? Co muszę zrobić, aby uzyskać dane?

* Jak na ironię, moim projektem w chwili, w której powstało to Q, jest eksport do użytku w Arcgis, ale nie Arcgis Desktop ...

matowe wilkie
źródło

Odpowiedzi:

4

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

Dla 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
źródło
dziękuję Ian! To działa, ale tak naprawdę jest tylko punktem wyjścia do prawdziwego rozwiązania. Wyeksportowane pliki są po prostu zrzucane do wspólnego folderu, tracąc związek z rekordem źródłowym. W komentarzach opisano metodę użycia Record_ID jako nazwy pliku; zbyt okrężny dla mnie i nie mieści wielu załączników, ale jest lepszy niż domyślny.
matt wilkie
Więcej zasobów pomocnych w podejściu do python: * forums.arcgis.com/threads/… * gist.github.com/oevans/6992139 * github.com/bgeomapping/arcgis-rest-toolbox
matt wilkie
3

Eksportowanie GDB do XML (klikając prawym przyciskiem myszy GDB> Eksportuj do XML) może idealnie eksportować funkcje + załączniki. Ponadto, jeśli szukasz bardziej zautomatyzowanego podejścia, ArcGIS 10.1 oferuje nowy zestaw narzędzi do eksportu XML. Możesz importować XML do nowych GDB lub bezpośrednio uzyskiwać dostęp do wszystkich danych, analizując je dla innych aplikacji.

Mojtaba Karami
źródło
1
To podejście brzmi intrygująco, jednak nie mam żadnych narzędzi (nie sądzę), które mogłyby korzystać z .xml. Zamieniłbym więc jeden nieprzezroczysty format na inny. Jednak przynajmniej w przypadku .xml istnieje możliwość dostępu i ponownego wykorzystania. Zbadam tę ścieżkę, gdy wdrożymy 10.1.
matt wilkie
2

Nie próbowałem kolejnych metod, więc po prostu o tym myślę:

Jeśli masz wygodę korzystania z ArcGIS .NET API, możesz użyć C # do eksportowania obiektów blob do plików. Spójrz na ten fragment kodu .

Być może możesz spróbować wyeksportować tabelę załączników do Personal GDB, a następnie spróbować wyeksportować tam obiekty BLOB. W ten sam sposób możesz wyeksportować do tabeli SDE i użyć do tego DBMS (sql?).

Alex Markov
źródło