ArcGIS dışında kullanım için ekli özellikler dışa aktarılsın mı?


14

ArcGIS 10 , bir coğrafi veritabanında saklanan sınıfları öne çıkarmak için bireysel özelliklere ekler ekleme yeni özelliğine sahiptir . Bunun bir kullanımı, belirli bir konuma birden fazla resim eklemek olacaktır, yangın hidrantları popüler bir örnek gibi görünmektedir (sanırım internette bir köpek olup olmadığınızı bilmek önemlidir).

Veritabanında, ekli bir özellik sınıfının yapısı üç katlıdır:

  • özellik sınıfının kendisi,
  • ekleri ve ilişkili meta verileri (dosya adı, boyut vb.) tutan bir tablo ve
  • ikisi arasındaki 1-çok ilişkisini tanımlayan bir ilişki sınıfı.

ek özellikli bir özellik sınıfı içeren 3 öğe

Sorum şu: Arcgis dışında tüketim için bu özellik - özellik sınıfı, ekler, ek meta verileri - nasıl dışa aktarılır? *

FC'yi dışa aktarmak kolaydır, FeatureClassToFeatureClass , ek özellikli olmayan bir FC ile aynı şekilde çalışır. Ekler tablosu dışa aktarılsın mı? Çok değil. TableToTable to output.dbf yalnızca ekli dosya meta verilerini, desteklenmeyen alan türüyle output.csv hatalarını çıkarır ve çıktı bilgisi tablosu genel alan hatasıyla başarısız olur.

Bu dosya türleri ikili bir blob veri tipini desteklemediğinden bu kadar şaşırtıcı değil. Ekli ikili dosyaları kendi yerel biçimlerine dönüştürecek bir araç bulmayı umuyordum / umuyordum, örn.

tablo dosya sistemi diyagramı

Peki buna ne dersiniz? Verileri çıkarmak için ne yapmam gerekir?

* ironik bir şekilde bu Q'yu ortaya çıkaran projem Arcgis Masaüstü için değil, Arcgis içinde kullanılmak üzere ihracat yapmak ...

Yanıtlar:


4

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

ArcGIS 10.1+ için

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

teşekkür ederim ian! Bu işe yarıyor, ama gerçekten gerçek bir çözüm için sadece bir başlangıç ​​noktası. Dışa aktarılan dosyalar sadece ortak bir klasöre dökülür ve kaynak kayıtla olan ilişkisi kaybedilir. Yorumlarda dosya adı olarak Record_ID kullanmak için açıklanan bir yöntem vardır; benim için çok dolambaçlı ve birden fazla eki barındırmıyor, ancak varsayılandan daha iyi.
matt wilkie


3

GDB'yi XML'e dışa aktarmak (GDB> XML'e Dışa Aktar'a sağ tıklayarak) özellikleri + ekleri mükemmel bir şekilde dışa aktarabilir. Ayrıca, daha otomatik bir yaklaşım arıyorsanız ArcGIS 10.1, XML dışa aktarımı için yeni bir araç kutusu içerir. XML'yi yeni GDB'lere aktarabilir veya diğer uygulamalara ayrıştırarak tüm verilerine doğrudan erişebilirsiniz.


1
Bu yaklaşım ilgi çekici geliyor, ancak .xml'yi de kullanabilen herhangi bir aracım yok (sanmıyorum). Bu yüzden sadece bir diğeri için opak bir formatta işlem yapardım. Ancak en azından .xml ile erişim ve yeniden kullanım potansiyeli vardır . 10.1 konuşlandırıldığında bu yolu keşfedeceğim.
matt wilkie

2

Sonraki yöntemleri denemedim, bu yüzden sadece bu konuda düşüncelerim:

ArcGIS .NET API ile uyumluysanız, BLB'leri dosyalara aktarmak için C # kullanabilirsiniz. Bu pasaja bir göz atın .

Ayrıca, ek tabloyu Kişisel GDB'ye vermeyi ve sonra blobs'u oraya aktarmayı deneyebilirsiniz. Aynı şekilde SDE tablosuna dışa aktarabilir ve bunu gerçekleştirmek için DBMS (sql?) Kullanabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.