Esri 元数据转换程序 (Conversion)
摘要
使用 ArcGIS 元数据转换引擎或 XSLT 转换可将 ArcGIS 中的元数据内容导出为独立的 XML 元数据文件。将对导出的元数据进行格式化,使其符合与指定转换相关的元数据标准。
ArcGIS 中项的元数据以 ArcGIS 元数据格式进行存储。使用“ArcGIS 转”转换可将 ArcGIS 元数据导出为另一种元数据 XML 格式。例如,通过将元数据转换为 XML 格式并将其发布到元数据目录,可以在 ArcGIS 外部共享信息。不同的元数据目录可接受不同 XML 格式的信息。如果必须依据不同要求将信息发布到不同的元数据目录中,可将 ArcGIS 元数据导出为各种不同的格式来满足这种要求。
当使用“转 ISO 19139”转换时,导出的元数据会遵照 ISO 标准 19139(Geographic information — Metadata — XML schema implementation)及其相关“XML 模式”所定义的规则进行格式化。根据 ISO 元数据专用标准,使用相同转换导出元数据。此转换会考虑到 ArcGIS 中所选择的元数据样式。例如,当已选元数据样式为 North American Profile of ISO 19115:2003 – Geographic information – Metadata 时,输出文件会按照该 ISO 元数据配置文件进行相应的格式化。
当使用“ArcGIS 转 FGDC”转换时,将按照联邦地理数据委员会 (FGDC) Content Standard for Digital Geospatial Metadata (CSDGM) 的 XML 格式来格式化导出的元数据。例如,生成的文件可以发布到 geodata.gov。
“FGDC 转”转换会处理根据 FGDC CSDGM XML 格式进行格式化的项目的元数据中的信息。当正在使用授予您对项目元数据全部访问权限的元数据样式时,此内容显示在描述选项卡中的 FGDC 元数据(只读)标题下。此内容可能已通过当前版本 ArcGIS for Desktop 的 FGDC 元数据编辑器加载项进行提供,也可能已通过 ArcGIS Desktop 9.3.1(或更早版本) 的 FGDC 元数据编辑器进行提供。
“转 ArcGIS”转换可将其他的元数据 XML 格式转换为 ArcGIS 元数据格式。在将以其他格式存在的元数据导入到 ArcGIS 项目的过程中,上述步骤是一个重要的步骤,但是要获得最佳结果,无论如何也都需要几个额外的步骤。改用将“导入元数据”工具与适当的转换结合使用的方法,来完成此任务。
用法
随当前版本的 ArcGIS for Desktop 一起提供的新元数据转换程序 -“ArcGIS 转 ISO 19139”转换程序 ARCGIS2ISO19139.xml。为了使用此转换程序,已升级了所有基于 ISO 的元数据样式。同样地为了使用此转换程序,元数据输出为 ISO 19139 格式的任何地理处理模型或 Python 脚本也将得到相应的升级。
我们将继续提供早期的“ArcGIS 或 ESRI-ISO 转 ISO 19139”转换程序 ESRI_ISO2ISO19139.xml;但是,此转换程序有几个无法解决的已知问题。任何现有 ESRI-ISO 格式的 9.3.1 元数据必须升级为 ArcGIS 元数据格式,才能通过“ArcGIS 转 ISO 19139”转换程序 ARCGIS2ISO19139.xml 成功地将项目的元数据内容导出到 ISO 19139 格式。
-
使用“转 ArcGIS”转换将元数据转换为 ArcGIS 元数据格式时,原始文档将作为封装文件包含在生成的元数据中。您可以通过 ArcCatalog 中的元数据属性 对话框访问原始文档。
-
此工具所提供的元数据内容验证消息解释说明了元数据标准中记录的详细条件,这些条件无法使用“XML 模式”验证进行测试。例如,在基于 ISO 19115 的元数据中,由元数据等级分级元素值决定是否需要主题类别,此条件无法使用“XML 模式”进行测试。
如果项目包含空间数据,则需要主题类别。如果项目标识为空间数据但主题类别丢失,将报告以下验证错误:验证失败:em:Resource($a) --> es:not(em:Dataset($a)); em:identificationInfo($a, $b), em:topicCategory($b, $c), em:lookupCodeName($c, gmxRes:MD_TopicCategoryCode)。此语句表示项目要么不是数据集,要么必须提供有效的主题类别编码,在本例中,两种条件均未满足。
-
由此工具生成的输出文件不能存储在地理数据库中。如果当前工作空间环境被设置为地理数据库,则输出文件将存储在其他位置,具体如下所述。
-
源元数据参数具有复杂的数据类型。如果在模型中使用此工具,需要在模型构建器中为源元数据参数创建变量,方法是右键单击此工具,然后选择获取变量 > 从参数 > 源元数据。
除“ArcGIS 转 FGDC”和“ArcGIS 转 ISO 19139”转换程序外的每个转换程序,均引用包含验证规则的文件。开始使验证消息表示已开始使用指定文件中的规则进行验证。ISO19139_min_schema.txt 中定义的验证规则涉及 ISO 标准元数据的最基本的强制性要求,而 ESRI-ISO_schema.txt 中定义的规则针对其余的元数据元素。
这些规则用于判断是否已提供规定的元素,是否需要并已提供条件元素,以及元数据元素中提供的值是否为正确的数据类型。验证规则无法检测出基数问题(例如只允许有一个目的元素但提供了两个)。发现的任何验证问题都会在此工具的消息中显示为警告。例如,在 ISO 元数据中,需要提供元数据联系人。下列警告指示未提供完整的元数据联系人信息:验证失败:em:Metadata($a) --> em:contact($a, $b), em:CI_ResponsibleParty($b);也就是说,根本未提供元数据联系人信息,或者所提供的联系人信息未遵照 ISO 19115 元数据标准中 CI_ResponsibleParty 信息类所定义的规则。
验证后,转换程序会生成 XML 格式的元数据输出文件。将在此时进行基数规则测试。如果实际元素数量超出预期数量,则不会向 XML 格式的元数据输出文件写入任何元素。某些验证问题会阻止转换程序生成有效的 XML 格式输出文件,它们也会在此阶段报为警告。例如,如果未提供有效的元数据联系人,那么输出文件中将无法包括此信息:Error [InvalidForSome]:<MD_Metadata> for-some clause:em:contact(v:Metadata, v:Object) <contact>;也就是说,无法将一个或多个联系人元素添加到 XML 输出文件中的 MD_Metadata 元素。此消息虽以单词“error”开头,但也属于警告。
-
在安装位置的 Metadata\Translator 文件夹中,ArcGIS for Desktop 提供了用于配置转换的转换程序 XML 文件。如果在 XML 编辑器中打开其中一个文件,您会看到转换程序元素具有 stopOnErrors 属性。此属性具有以下三个值:yes、no 或 any。在模型中加入此工具时,您可以复制某一默认“转换程序”,然后更改 stopOnErrors 的值以生成所需行为。
- no - 默认值。如果遇到警告,转换过程将继续。如果遇到错误,转换过程将停止并创建一个不完整的输出文件;此文件所包含的 XML 的格式很可能不正确。工具将成功执行。
- yes - 如果遇到警告或错误,转换过程将停止。将创建不完整的输出文件,其中包含遇到问题之前产生的转换结果;此文件所包含的 XML 的格式很可能不正确。工具将成功执行。
- any - 如果遇到警告或错误,转换将停止。不会创建输出文件,工具执行将失败。
语法
参数 | 说明 | 数据类型 |
source |
要进行元数据转换的项,或者要进行转换的独立 XML 文件。 | Data Element; Layer |
translator |
对要执行的转换进行定义的 XML 文件。 ArcGIS for Desktop 提供的转换程序文件位于 <ArcGIS 安装位置>\Metadata\Translator 文件夹中。提供下列转换程序:
必须指定转换程序文件。此工具没有为此参数设定默认值。 | File |
output (可选) |
要创建的独立 XML 文件,其中包含转换后的元数据。 要使用 Esri 元数据转换程序的转换引擎检查元数据中的问题,同时不产生 XML 输出文件,可使用井号 (#) 代替文件名。 | File |
logfile (可选) |
在要创建的文本文件中,列出了转换过程中所产生的警告和错误。 要导出元数据而不产生日志文件,请用井号 (#) 代替文件名。 即使提供了日志文件名称,使用“ArcGIS 转 FGDC”转换时也不会创建日志文件。 | File |
代码实例
将 ArcGIS 元数据导出为按照 ISO 19139 元数据标准进行正确格式化的 XML 文件。
import arcpy
from arcpy import env
env.workspace = "C:/data"
#set local variables
dir = arcpy.GetInstallInfo("desktop")["InstallDir"]
translator = dir + "Metadata/Translator/ESRI_ISO2ISO19139.xml"
arcpy.ESRITranslator_conversion ("locations.shp", translator,
"locations_19139.xml", "locations_19139.txt")