ArcGIS 외부에서 사용할 수 있도록 첨부 파일이있는 피쳐를 내보내시겠습니까?


14

ArcGIS 10에는 지오 데이터베이스에 저장된 피쳐 클래스에 개별 피쳐첨부 파일추가 할 수있는 새로운 기능이 있습니다 . 이것을 사용하는 한 가지 방법은 특정 위치에 여러 그림을 추가하는 것입니다. 소화전 은 인기있는 예인 것 같습니다 (내가 생각하는 피트 스탑이 필요한 인터넷의 개인 지 알아야 함).

데이터베이스에서 첨부 파일 사용 피처 클래스의 구조는 3 중입니다.

  • 기능 클래스 자체
  • 첨부 파일 및 관련 메타 데이터 (파일 이름, 크기 등)가 포함 된 테이블
  • 둘 사이의 일대 다 관계를 정의하는 관계 클래스

첨부 파일 사용 피처 클래스를 구성하는 3 가지 항목

제 질문은 Arcgis 외부 에서 소비하기 위해이 데이터 (기능 클래스, 첨부 파일, 첨부 파일 메타 데이터)를 내보내는 방법 입니다. *

FC를 쉽게 내보낼 수있는 FeatureClassToFeatureClass 는 첨부 파일을 사용하지 않는 FC와 동일하게 작동합니다. 첨부 파일을 내보내시겠습니까? 별로. tableToTable to output.dbf는 첨부 된 파일 메타 데이터 만 추출하고 지원되지 않는 필드 유형으로 output.csv 오류를 출력하며 info 필드 출력 은 일반 필드 오류로 실패합니다.

이러한 파일 형식이 이진 Blob 데이터 형식을 지원하지 않기 때문에 놀라운 것은 아닙니다. 첨부 된 바이너리를 기본 형식으로 변환하는 도구를 찾을 것으로 기대했습니다.

테이블 대 파일 시스템 다이어그램

그럼 어때요? 데이터를 꺼내려면 어떻게해야합니까?

* 아이러니하게도이 Q를 양산 순간의 내 프로젝트는 ARCGIS 내에서 사용하기 위해 그냥는 ArcGIS 데스크탑을 수출하는 것입니다 ...

답변:


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

파이썬 접근하는 데 도움이되는 몇 가지 더 많은 자원 : * 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을 배포 할 때이 경로를 살펴 보겠습니다.
matt wilkie 5

2

나는 다음 방법을 시도하지 않았으므로 그것에 대한 나의 생각 :

ArcGIS .NET API를 사용하는 것이 편리한 경우 C #을 사용하여 블롭을 파일로 내보낼 수 있습니다. 이 스 니펫을 살펴보십시오 .

첨부 파일 테이블을 Personal GDB로 내 보낸 다음 Blob을 내보내려고 할 수도 있습니다. 같은 방법으로 SDE 테이블로 내보내고 DBMS (sql?)를 사용하여 수행 할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.