โปรแกรมแก้ไข / ปรับปรุงข้อมูลเมตาใน ArcGIS?


10

มีใครประสบความสำเร็จในการอัปเดตข้อมูลเมตาในโปรแกรม ArcGIS 10 หรือไม่ การพิจารณาใช้ Python / arcpy แต่ ArcObjects (C # หรือ Python / comtypes) ก็เป็นไปได้เช่นกัน

ฉันต้องการอัปเดตทั้งเมตาดาต้ารูปแบบ FGDC และ ArcGIS-ISO และวิธีการใดก็ตามที่ใช้จะต้องสามารถรักษาองค์ประกอบที่มีอยู่ (ไม่ว่างเปล่า) พร้อมกับองค์ประกอบที่เพิ่มเข้ามาได้ยกเว้นในกรณีที่ขัดแย้งกัน องค์ประกอบที่เพิ่มเข้ามาเขียนทับองค์ประกอบที่มีอยู่

คำตอบ:


9

วิธีที่ง่ายที่สุดที่จะทำนี้จาก ArcPy คือการสร้างไฟล์ XML ใช้งูใหญ่แล้วอัญเชิญนำเข้าเมตาดาต้า (แปลง) อย่างไรก็ตามสิ่งนี้จะเขียนทับทุกอย่าง

อีกทางเลือกหนึ่งคือการใช้ ArcObjects เพื่อรับ IName ให้กับชุดข้อมูลส่งไปยัง IMetadata และแก้ไข IPropertyset


11

เรามีความต้องการขนาดใหญ่สำหรับความสามารถที่คล้ายกันและจบลงด้วยการสร้างห้องสมุด Python โอเพ่นซอร์สทั่วไปฟรีเพื่อวัตถุประสงค์ คุณสามารถค้นหาได้ที่https://github.com/ucd-cws/arcpy_metadataหรือเรียกใช้ "pip install arcpy_metadata" มีคุณสมบัติบางอย่างเกี่ยวกับเอกสารและวิธีใช้งานโดยมีส่วนร่วมเพิ่มเติมจากสถาบันทรัพยากรโลก เราพยายามที่จะเก็บสิ่งต่าง ๆ ที่ค่อนข้างไพทอนเพื่อให้มันทำงานได้ดีและสามารถเรียนรู้ได้อย่างรวดเร็ว นี่คือตัวอย่าง:

import arcpy_metadata as md
import datetime

metadata = md.MetadataEditor(path_to_some_feature_class)  # also has a feature_layer parameter if you're working with one, but edits get saved back to the source feature class
metadata.title = "The metadata title!"

generated_time = "This layer was generated on {0:s}".format(datetime.datetime.now().strftime("%m/%d/%Y %I:%M %p"))

metadata.purpose = "Layer represents locations of the rare Snipe."

metadata.abstract.append("generated by ___ software")
metadata.abstract.append(generated_time)  # .prepend also exists
metadata.tags.add(["foo", "bar", "baz"])  # tags.extend is equivalent to maintain list semantics

metadata.finish()  # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!

มันยังมีอีกมากมายที่สามารถเพิ่มได้ แต่สามารถขยายได้ค่อนข้างสวยถ้าคุณซับคลาสไอเท็มที่มีอยู่แล้วหรือกำหนดค่าอย่างถูกต้อง มันยังคงเป็นซอฟต์แวร์คุณภาพเกี่ยวกับอัลฟ่า แต่ใช้งานได้และเรามีความสุขกับมัน


สำหรับทุกคนที่มองหาความสามารถนี้ภายใน ArcGIS Pro ซึ่งเป็นรุ่น 2.5 ตอนนี้พวกเขารวม metadata API จาก Python มีรายละเอียดเพิ่มเติมในเอกสารประกอบคลาสเมทาดาทา


9

เราได้รับการดิ้นรนกับเรื่องนี้และแก้ไขมันได้โดยมีห้องสมุดหลามแบบง่าย ๆ ที่สร้างขึ้นรอบฟังก์ชั่นเมทาดาทาของ arcobjects มันขึ้นอยู่กับไฟล์ xml ที่ค่าเมทาดาทาถูกแทนที่ด้วยคำหลัก คุณสามารถใช้คำหลักเหล่านี้ในรหัสหลามของคุณเพื่อรับหรือตั้งค่าของเขตข้อมูลเมทาดาทา Code woud มีลักษณะดังนี้:

import dataprocessing
DP = dataprocessing.create()

md = DP.OpenMetadata("C:/MyShapefile.shp") # Works also on geodatabases
myKeyword = "%FGDC.abstract" # Keywords have to start with '%' but the rest is up to you

if md.GetValue(myKeyword) == "Not what I want":
    md.SetValue(myKeyword, "New value that suits me better")

เครื่องมือสามารถพบได้ที่นี่: http://www.aris.nl/dataprocessing_arcgisและสามารถใช้ได้อย่างอิสระ รุ่นบนเว็บไซต์มีไว้สำหรับ arcgis 9.3 เวอร์ชั่น arcgis 10 จะพร้อมใช้งาน แต่จะไม่ให้บริการฟรีอีกต่อไป

(การเปิดเผยอย่างเต็มรูปแบบ: ฉันทำงานให้กับหน่วยงานรัฐบาลดัตช์ซึ่งเรามีเครื่องมือนี้รุ่นปัจจุบันที่สร้างขึ้นส่วนหนึ่งจากเงินของผู้เสียภาษีและบางส่วนจากเวลาที่บริจาคโดยโปรแกรมเมอร์นั่นคือเหตุผลว่าทำไมมันถึงมีให้ฟรี แต่ไม่ใช่โอเพ่นซอร์ส ไม่ได้ให้เงินสนับสนุนรุ่นใหม่ ๆ ฉันไม่ได้ทำเงินออกมาไม่ว่าทางใดทางหนึ่งฉันแค่หวังว่ามันจะใช้งานได้มากขึ้น)


1

ทางเลือกที่สามฉันกำลังมองหาในตอนนี้คือการใช้แฟ้ม XSLT พร้อมกับการเปลี่ยนแปลง XSLT (แปลง)เครื่องมือ ฉันค่อนข้างจะต้องเรียนรู้ภาษาที่ฉันไปและพวกเขาไม่ได้ทำให้คุณง่ายขึ้นด้วยการใช้. NET ซึ่งใช้มาตรฐาน XSLT / XPath รุ่นเก่ากว่า


1

ฉันมีรหัสบางส่วนที่ใช้ ArcPy และ DOM สำหรับการแปลง MD ที่มีอยู่การสร้างตั้งแต่เริ่มต้น (ถ้าไม่มี) และการอัปเดตองค์ประกอบบางอย่างที่ใช้ DOM มันเป็นบิตที่ค่อนข้างหนักแน่นมีชื่อพา ธ ที่ใช้ฮาร์ดโค้ดจำนวนมากและอื่น ๆ

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