元数据发布程序 (Conversion)
摘要
将元数据发布到元数据目录(如 ArcIMS 元数据服务)。
元数据发布程序工具检索源项的元数据,然后将此元数据文档的副本传送到此工具中指定的发布程序。如果源项是独立的 XML 文件,则将此文件本身的副本传送到发布程序。发布程序使用工具参数和元数据文档中的信息创建将文档发布到指定元数据目录的请求。
用法
ArcGIS Desktop 随附一个发布程序,该发布程序支持将 ArcGIS 元数据发布到 ArcIMS 元数据服务。此发布程序名为 arcimsmd.xml,位于 <ArcGIS 安装位置>\Metadata\Publisher 文件夹。
此发布程序使用元数据内容构造相应的 ArcXML PUBLISH_METADATA 请求。首先检查 FGDC 元数据内容。如果未找到合适的信息,发布程序接着检查 ArcGIS 元数据内容。即使元数据中不包含 ArcIMS 元数据浏览器应用程序需要的信息,也会发布元数据。
-
使用 GUID 唯一标识 ArcIMS 元数据服务中的文档。将一个文档发布到 ArcIMS 元数据服务时,如果在 <rootElement>/Esri/PublishedDocID 元素中还没有该文档的 GUID,而您具有元数据的写入权限,则会生成一个 GUID 并存储在上述位置。此标识符用于确保,以后更新和重新发布该文档时,将替换服务器上的现有副本。
如果使用自定义模型发布元数据时在发布之前删除了私人信息,并且源元数据项以前没有唯一标识符,则由此工具创建的标识符将保存到模型的中间数据,但不保存到原始项目。
要避免出现此问题,可以在发布之前通过 XSLT 变换工具(使用位于 <ArcGIS 安装位置>\Metadata\Stylesheets\gpTools 文件夹中的 add unique identifier.xslt 文件)将唯一标识符添加到项目的元数据。此操作很安全 - 如果元数据已有唯一标识符,则现有标识符保持不变。请确保将包含新标识符的元数据版本与原始 ArcGIS 项目一起保存;否则,下次发布该项目的元数据时,ArcIMS 元数据服务会存在两个文档使用两个不同的标识符描述同一个项目的情况。
-
如果将元数据发布到 ArcIMS 元数据服务,必须提供有权限将文档发布到该服务的用户的凭据。如果发布出现问题,请在 Catalog 窗口中使用相同凭据连接到 ArcIMS 服务器。如果您有使用这些凭据发布文档的权限,则元数据服务将显示手握铅笔的图标 。
-
此工具不发布与某些 ArcGIS 项目(如地图、globe 和 scene 文档;图层文件;文本文件;Excel 文件;文件类型;ArcIMS 服务和地理处理工具)关联的元数据。发布这些项目会生成不支持的源错误消息。
-
如果元数据文档不包含合适的 XML 数据,而使用此工具发布元数据,则此工具将生成不支持的源错误消息。
-
源元数据参数具有复杂的数据类型。如果在模型中使用此工具,需要在模型构建器中为源元数据参数创建变量,方法是右键单击此工具,然后选择获取变量 > 从参数 > 源元数据。
-
在模型构建器中使用此工具时,输出元数据参数从源元数据参数获取。
语法
参数 | 说明 | 数据类型 |
source |
要进行元数据发布的项目,或者要进行发布的独立 XML 文件。 | Data Element; Layer |
publisher |
定义如何发布元数据的 XML 文件。 | File |
url (可选) |
托管元数据目录的 Web 服务的 URL(如果适用)。 例如,提供元数据服务的 ArcIMS 服务器的 URL。 | String |
service (可选) |
想要发布到的服务的名称(如果适用)。 例如,如果是 ArcIMS 元数据服务,则为元数据服务的区分大小写的名称。 | String |
user (可选) |
发布文档时用于访问元数据目录的用户名(如果适用)。 例如,将文档发布到 ArcIMS 元数据服务时,必须使用被授予 metadata_publisher 权限或更高权限的用户名登录到服务。 | String |
password (可选) |
发布文档时用于访问元数据目录的密码(如果适用)。 例如,将文档发布到 ArcIMS 元数据服务时,则为使用指定用户名登录需要的密码。 | String |
代码示例
将 ArcGIS 项目的元数据发布到 ArcIMS 元数据服务。除非标识有效的 ArcIMS 元数据服务,并且提供具有足够权限的有效的用户名和密码,否则无法成功完成此代码示例。
import arcpy from arcpy import env env.workspace = "C:/data/data.gdb" #set local variables dir = arcpy.GetInstallInfo("desktop")["InstallDir"] pub = dir + "Metadata/Publisher/arcimsmd.xml" arcpy.MDPublisher_conversion("locations", pub, "http://myserver", "Metadata", "myUsername", "myPassword")