การส่งออกฟีเจอร์พร้อมไฟล์แนบสำหรับใช้นอก ArcGIS?


14

ArcGIS 10 มีคุณสมบัติความสามารถใหม่ในการเพิ่มสิ่งที่แนบมากับคุณสมบัติแต่ละอย่างเพื่อจัดเก็บคลาสในฐานข้อมูลภูมิศาสตร์ การใช้สิ่งนี้เพียงอย่างเดียวคือการเพิ่มรูปภาพหลายภาพไปยังสถานที่เฉพาะเจาะจงhydrants ไฟดูเหมือนจะเป็นตัวอย่างที่นิยม (สำคัญที่จะต้องรู้ว่าคุณเป็นสุนัขบนอินเทอร์เน็ตในความต้องการของการหยุดหลุมฉันคิดว่า)

ในฐานข้อมูลโครงสร้างของคลาสคุณลักษณะที่เปิดใช้งานสิ่งที่แนบมาคือสามเท่า:

  • คลาสฟีเจอร์เอง
  • ตารางที่เก็บสิ่งที่แนบและเมตาดาต้าที่เกี่ยวข้อง (ชื่อไฟล์, ขนาด, ฯลฯ ) และ
  • คลาสความสัมพันธ์ที่กำหนดความสัมพันธ์แบบ 1 ต่อหลายคนระหว่างทั้งสอง

3 รายการที่ประกอบด้วยคลาสคุณลักษณะที่เปิดใช้งานการแนบ

คำถามของฉันคือ: วิธีการส่งออกข้อมูลนี้ - คลาสคุณลักษณะ, สิ่งที่แนบ, ข้อมูลเมตาของสิ่งที่แนบมา - เพื่อการบริโภคนอก Arcgis? *

การส่งออก FC นั้นเป็นเรื่องง่ายFeatureClassToFeatureClassทำงานเหมือนกับบน FC ที่ไม่ได้เปิดใช้งาน กำลังส่งออกตารางสารบัญหรือไม่ ไม่มากนัก. TableToTableไปยัง output.dbf แยกเมตะดาต้าของไฟล์ที่แนบมาเท่านั้นไปยังข้อผิดพลาด output.csv ด้วยประเภทเขตข้อมูลที่ไม่ได้รับการสนับสนุนและไปที่ตารางข้อมูลผลลัพธ์ล้มเหลวพร้อมข้อผิดพลาดฟิลด์ทั่วไป

นี่ไม่ใช่สิ่งที่น่าแปลกใจเนื่องจากไฟล์ประเภทเหล่านั้นไม่สนับสนุนประเภทข้อมูลไบนารี blob ฉันคาดหวัง / หวังว่าจะพบเครื่องมือที่จะแปลงไบนารีที่แนบมาเป็นรูปแบบดั้งเดิมเช่น

ตารางไปยังไดอะแกรมระบบไฟล์

แล้วมันเป็นอย่างไร ฉันต้องทำอะไรเพื่อให้ได้ข้อมูลออกมา

* แดกดันโครงการของฉันในช่วงเวลาที่วางไข่ 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 # เพื่อส่งออก blobs ไปยังไฟล์ ดูตัวอย่างข้อมูลนี้

คุณอาจลองส่งออกตารางแนบไปยัง Personal GDB แล้วลองส่งออก blobs ที่นั่น เช่นเดียวกับที่คุณสามารถส่งออกไปยังตาราง SDE และใช้คุณ DBMS (sql?) เพื่อดำเนินการ


1

ดาวน์โหลดสคริปต์ต่อไปนี้เป็นเจ้าภาพสิ่งที่แนบคุณสมบัติชั้นไปยังดิสก์: ดาวน์โหลดไฟล์แนบคุณสมบัติชั้นผ่าน API ArcGIS สำหรับงูหลาม ใช้ ArcGIS API ล่าสุดสำหรับ Python ซึ่งโต้ตอบโดยตรงกับ Web GIS ใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.