在ArcGIS中以编程方式编辑/更新元数据?


10

有谁成功通过编程方式更新了ArcGIS 10中的元数据?考虑使用Python / arcpy但也可以使用ArcObjects(C#或Python / comtypes)。

我需要同时更新FGDC和ArcGIS-ISO格式的元数据,并且无论使用哪种解决方案,都必须能够保留现有(非空白)元素以及添加的元素,除非在发生冲突的情况下添加的元素将覆盖现有元素。

Answers:


9

从ArcPy执行此操作的最简单方法是使用Python创建XML文件,然后调用Import Metadata(Conversion)。但是,这将覆盖所有内容。

一种替代方法是使用ArcObjects获取数据集的IName,转换为IMetadata,然后编辑IPropertyset。


11

我们非常需要类似的功能,最终为此目的建立了一个通用的,免费的开源Python库。您可以在https://github.com/ucd-cws/arcpy_metadata或运行“ pip install arcpy_metadata” 找到它。这里有一些功能及其使用方法的文档,还有世界资源研究所的一些额外贡献。我们试图使事物保持相对 Pythonic的状态,以便它可以很好地集成并且可以快速学习。这是一个例子:

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!

它仍然可以添加很多东西,但是如果您将已经存在的项目子类化或正确配置它们,则可以很扩展。它仍然是关于Alpha质量的软件,但是它可以工作,我们对此感到满意。


从2.5版开始,对于在ArcGIS Pro中寻求此功能的任何人,他们现在都包含来自Python的元数据API。元数据类文档中有更多详细信息。


9

我们一直在为此苦苦挣扎,并通过围绕arcobjects元数据函数构建了一个简单的python库来解决了这个问题。它基于xml文件,其中元数据值已替换为关键字。您可以在python代码中使用这些关键字来获取或设置元数据字段的值。代码看起来像这样:

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版本将可用,但将不再免费。

(完整披露:我在一家荷兰政府机构工作,我们拥有该工具的当前版本,部分是由纳税人的钱提供的,部分是由程序员捐赠的时间而建立的。这就是为什么该工具免费提供但不开放的原因。自2013年起,我们将不会为任何新版本提供资金。我不会以任何方式从中获利。我只是希望它能得到更多利用。)


1

我现在要研究的第三个选项是将XSLT文件与XSLT转换(转换)工具一起使用。我几乎必须继续学习该语言,并且使用使用较旧的XSLT / XPath 1.0标准的.NET实现,它们并不能使您轻松。


1

我有一些代码使用ArcPy和DOM进行现有MD的转换,从头开始创建(如果不存在)以及使用DOM更新某些元素。它有点笨拙,有很多硬编码的路径名等等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.