Metadata

摘要

Metadata 类可用于存取项目的元数据,并将元数据导出为标准元数据格式。如果您具有相应权限,则该类允许您修改项目的元数据,或将标准格式的元数据 XML 文件的内容导入到项目中。

语法

Metadata
 ({uri})
参数说明数据类型
uri

用于标识要更新其元数据的项目的 URI。

String

提供 URI 后,返回的 Metadata 对象将提供对 URI 所标识项目的元数据的访问权限。如果尚未创建用于描述项目的元数据,并且您具有足够的权限来创建元数据,则将为项目创建元数据,且新的元数据文档的内容将由返回的对象表示。如果项目不支持元数据,或者项目不存在,则会创建一个空对象;否则,无法将更改保存回项目。

在未提供 URI 的情况下创建 Metadata 对象时,会创建一个空对象。您可以使用 Metadata 对象创建或导入元数据,然后将其内容保存到新的 XML 文件或作为其元数据保存到另一个项目。

你也可以从工程、地图、地图图层、布局和报告中获取 Metadata 对象,并使用该对象访问和管理其元数据。

创建一个 Metadata 对象并定义其内容,然后为要素类获取 Metadata 对象。将新 Metadata 对象的新内容分配给要素类。

import arcpy
from arcpy import metadata as md
# Create a new Metadata object and add some content to it
new_md = md.Metadata()
new_md.title = 'My Title'
new_md.tags = 'Tag1, Tag2'
new_md.summary = 'My Summary'
new_md.description = 'My Description'
new_md.credits = 'My Credits'
new_md.accessConstraints = 'My Access Constraints'
# Assign the Metadata object's content to a target item
streets_path = r'C:\Data\LocalArea.gdb\Streets'
tgt_item_md = md.Metadata(streets_path)
if not tgt_item_md.isReadOnly:
    tgt_item_md.copy(new_md)
    tgt_item_md.save()

从工程中获取 Metadata 对象。

import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\data_management.aprx")
aprx_metadata = aprx.metadata
print(aprx_metadata.title)
print(aprx_metadata.description)

使用 Python 窗口从当前地图获取 Metadata 对象。

import arcpy aprx = arcpy.mp.ArcGISProject("CURRENT") current_map = aprx.activeMap map_metadata = current_map.metadata print(map_metadata.title) print(map_metadata.description)

从地图图层获取 Metadata 对象。

import arcpy aprx = arcpy.mp.ArcGISProject(r"C:\Projects\data_management.aprx") layer = aprx.listMaps()[0].listLayers()[0] layer_metadata = layer.metadata print(layer_metadata.title) print(layer_metadata.description)

属性

属性说明数据类型
accessConstraints
(可读写)

有关使用项目的书面限制。派生自在项目元数据中定义的使用限制

String
credits
(可读写)

提供项目制作者或提供者名单的信息。派生自在项目元数据中定义的制作者

String
description
(可读写)

项目的描述。派生自在项目元数据中定义的描述(摘要),或地理处理工具的汇总(摘要)

此属性可包含纯文本,也可包含 HTML 片段。在 ArcGIS DesktopArcGIS Pro,或者在 ArcGIS Online 或 Enterprise 门户内的 ArcGIS 元数据编辑器中写入描述时,该描述将包含 HTML 标签。

String
isReadOnly
(只读)

检查是否可以更新由 Metadata 对象表示其元数据的项目的元数据。如果创建了一个新的空 Metadata 对象,则 Metadata 对象尚未与磁盘上的项目或 XML 文件关联,但其可写入,因为您可以修改 Metadata 对象的内容,然后将其写入磁盘或将内容保存到您对其具有相应编辑元数据权限的项目。

Boolean
maxScale
(只读)

项目绘制时应采用的最大地图比例。派生自在项目元数据中定义的适当比例范围中的最大值。

Double
minScale
(只读)

项目绘制时应采用的最小地图比例。派生自在项目元数据中定义的适当比例范围中的最小值。

Double
summary
(可读写)

描述项目用途的摘要。派生自在项目元数据中定义的摘要(用途)

String
tags
(可读写)

一组描述项目的标签。派生自在项目元数据中定义的标签。该值是一个字符串,用于定义标签的逗号分隔序列。

String
thumbnailUri
(可读写)

图形文件的本地或网络路径或 URL,该图形文件用于描述并帮助标识项目。派生自从项目元数据中提取的缩略图。设置此值时,如果提供了 URL,则将下载已标识的文件并将其加入到项目的元数据中。

String
title
(可读写)

项目的描述性标题。派生自项目元数据中的标题

String
xmax
(只读)

项目的最小外接矩形沿 x 轴的最大值。派生自在项目元数据中记录的边界框东经坐标。

Double
xmin
(只读)

项目的最小外接矩形沿 x 轴的最小值。派生自在项目元数据中记录的边界框西经坐标。

Double
xml
(可读写)

项目作为字符串的 ArcGIS 元数据 XML 文档。并非所有项目都支持元数据。获取项目的元数据时,请确保检查返回值是否有空字符串。

String
ymax
(只读)

项目的最小外接矩形沿 y 轴的最大值。派生自在项目元数据中记录的边界框北纬坐标。

Double
ymin
(只读)

项目的最小外接矩形沿 y 轴的最小值。派生自在项目元数据中记录的边界框南纬坐标。

Double

方法概述

方法说明
copy (inputMetadata)

将元数据内容从输入 Metadata 对象复制到当前 Metadata 对象。例如,这支持将元数据从一个项目复制到另一个项目。

deleteContent (metadata_delete_option)

从表示项目元数据的 Metadata 对象中删除指示内容。

importMetadata (sourceUri, {metadata_import_option}, {customStylesheetPath})

将内容从由 sourceURI 标识的项目导入到 Metadata 对象。

exportMetadata (outputPath, {metadata_export_option}, {metadata_removal_option}, {customStylesheetPath})

用于转换 Metadata 对象,用于将项目的元数据表示为标准格式元数据 XML 文件。

reload ()

使用项目的当前元数据内容重新初始化 Metadata 对象。

save ()

将对 Metadata 对象中内容所做的更新保存回 Metadata 对象派生的原始项目。

saveAsUsingCustomXSLT (outputPath, customStylesheetPath)

使用自定义 XSLT 样式表将项目的 ArcGIS 元数据副本保存到独立的元数据 XML 文件中。

saveAsXML (outputPath, {metadata_save_as_xml_option})

将项目的 ArcGIS 元数据副本保存到独立的元数据 XML 文件。

synchronize (metadata_sync_option, interval)

使用项目的当前属性更新项目中的元数据内容,并将该内容重新加载到 Metadata 对象。

upgrade (metadata_upgrade_option)

升级当前项目的元数据。

方法

copy (inputMetadata)
参数说明数据类型
inputMetadata

使用元数据内容(采用 ArcGIS 元数据格式)创建并填充的 Metadata 对象。例如,此 Metadata 对象可派生自源要素类并复制到与当前 Metadata 对象关联的要素类。

Object

项目的元数据必须以 ArcGIS 元数据 XML 格式进行存储。只能复制 ArcGIS 元数据格式的元数据内容。

将元数据从元数据模板复制到当前工程中的地图。

import arcpy
from arcpy import metadata as md
# Get metadata content from a metadata template XML file
template_path = r'C:\Metadata\ArcGIS_metadata_template.xml'
src_item_md = md.Metadata(template_path)
# Copy the template's content to a map in the project
current_aprx = arcpy.mp.ArcGISProject('CURRENT')
map0 = current_aprx.listMaps()[0]
map0_md = map0.metadata
map0_md.copy(src_item_md)
map0_md.save()
current_aprx.save()
deleteContent (metadata_delete_option)
参数说明数据类型
metadata_delete_option

Specifies the content that will be deleted from the Metadata object. To make the change permanent, use the save method.

  • ENCLOSED_FILES With ArcCatalog it was possible to base64 encode files up to 5 MB in size and store them in an item's metadata in the same way that files can be attached to an email. With this option, any enclosed files will be deleted from the specified metadata document. Adding enclosures to an item's metadata is not supported in ArcGIS Pro. Documents containing information that is relevant to an item's metadata should be stored independently and referenced by file path or URL instead.
  • GPHISTORYThe geoprocessing options in ArcGIS Pro allow you to log geoprocessing operations in an item's metadata. Over time, the recorded geoprocessing history can become very large. With this option, an item's geoprocessing history will be deleted from the specified metadata document. Organizations that want to keep this information can prevent it from being deleted. Administrators can override both of these settings to suit the needs of the organization.
  • THUMBNAILArcGIS Pro allows you to capture a thumbnail that helps to illustrate the contents of a map or dataset. Thumbnails are helpful when searching for maps or data, and when publishing content to ArcGIS Online or an Enterprise portal. However, you can use this option to remove all thumbnails from an item's metadata.
String

元数据文档通常不会很大,即使其中包含描述完全符合地理空间元数据标准的项目的可靠文本。 文档大小通常介于 10 到 100 KB 之间。 建议使用缩略图来帮助描述项目并支持在整个 ArcGIS 软件(包括 ArcGIS Online)中使用项目及其元数据。 根据缩略图的创建方式,通常情况下,具有完整元数据和缩略图的文档大小平均为 250 KB。

使用 ArcCatalog,可以对最大为 5 MB 的文件进行 base64 编码,并将它们以与将文件附加到电子邮件相同的方式存储在项目的元数据中;这在使用 ArcGIS Pro 时不能实现。 不建议将文件包含在项目的元数据中。 这种做法将进一步增加项目元数据文档的大小,并可能影响数据库性能。 包含重要信息的文件应独立存储并由项目的元数据引用。

如果地理处理历史记录位于项目元数据中,并且地理处理工具像公共设施网络和宗地数据集一样经常用于分析、评估和管理数据时,则随着时间的推移,地理处理历史记录的规模会变得非常大。 已知包含多年地理处理历史记录的元数据文档的大小为 2 GB。 当企业级地理数据库中的所有项目都包含这种大小的元数据文档时,将影响整个数据库的性能。 为了优化性能,您可能希望从数据库中每个项目的元数据中删除地理处理历史记录。

此方法提供的选项允许您从项目的元数据中移除不需要的内容,并尽可能减小元数据文档的整体大小。

从项目元数据中删除内容。

import arcpy
from arcpy import metadata as md

# Get the target item's Metadata object
poles_path = r'C:\Data\LocalArea.gdb\UtilityPoles'
tgt_item_md = md.Metadata(poles_path)

# Delete all geoprocessing history and any enclosed files from the item's metadata
if not tgt_item_md.isReadOnly:
    tgt_item_md.deleteContent('GPHISTORY')
    tgt_item_md.deleteContent('ENCLOSED_FILES')
    tgt_item_md.save()
importMetadata (sourceUri, {metadata_import_option}, {customStylesheetPath})
参数说明数据类型
sourceUri

URI,用于标识将导入到 Metadata 对象的元数据的项目。

String
metadata_import_option

此选项用于确定将内容从源项目导入到 Metadata 对象的方式。此值指示存储在源项目中的元数据的 XML 格式。源项目的内容将被从指定格式转换为 ArcGIS 元数据 XML 格式,然后再保存到 Metadata 对象。

  • CUSTOM 自定义 XSLT 样式表将用于将其他 XML 格式转换为 ArcGIS 元数据 XML 格式。
  • DEFAULT 如果要从独立的元数据 XML 文件导入元数据,并且不确定其使用的 XML 格式,请使用此选项。将检查文档的格式,并将执行正确的转换,以将其内容转换为 ArcGIS 元数据 XML 格式。
  • FGDC_CSDGM 独立的元数据 XML 文件具有以 FGDC CSDGM XML 格式存储的内容。
  • ISO19115_3独立的元数据 XML 文件具有以 ISO 19115-3 XML 格式存储的内容。
  • ISO19139独立的元数据 XML 文件具有以 ISO 19139 XML 格式存储的内容,并且必须具有适用于 2007 版 ISO 19139 XML 模式的 GML 命名空间:http://www.opengis.net/gml
  • ISO19139_GML32独立的元数据 XML 文件具有以 ISO 19139 XML 格式存储的内容,并且必须具有适用于 2012 版 ISO 19139 XML 模式的 GML 命名空间:http://www.opengis.net/gml/3.2
  • ISO19139_UNKNOWN 独立的元数据 XML 文件具有以 ISO 19139 XML 格式存储的内容。如果不确定文档使用的 GML 名称空间,请使用此选项。将检查命名空间,并将执行正确的转换,以将文档的内容转换为 ArcGIS 元数据 XML 格式。
  • ARCGIS_METADATA 将 ArcGIS 项目或独立的元数据 XML 文档标识为源项目。源项目的元数据未转换为 ArcGIS 元数据 XML 格式,因为其已是正确的格式。

(默认值为 DEFAULT)

String
customStylesheetPath

本地或网络文件路径或 URL,用于标识将用于导入自定义 XML 格式的元数据的自定义 XSLT 样式表。仅当 metadata_export_optionCUSTOM 时,才将考虑此参数中的值。如果为 URL,则将下载引用的文件,并将使用下载的文件。

String

项目的元数据必须以 ArcGIS 元数据 XML 格式进行存储。导入的 XML 文件将使用由 metadata_import_option 标识的转换从标准元数据 XML 格式转换为 ArcGIS 元数据格式。生成内容存储在 Metadata 对象中。项目的许多属性、其缩略图和地理处理历史记录都将保留。但是,之前使用元数据编辑器输入的所有元数据内容都将移除,替换为导入的元数据内容。

如果独立的元数据文件的格式包含与 metadata_import_option 指定格式不匹配的 XML 格式,则将执行错误的转换,且不会将元数据内容导入到项目。但是,仍将作为流程的一部分移除项目现有的已输入元数据内容。

如果不确定文件的格式,请从标准格式的 XML 文件中导入元数据内容。DEFAULT 导入选项可检测文件的格式,并将其转换为 ArcGIS 元数据格式。

import arcpy
from arcpy import metadata as md
# Set the standard-format metadata XML file's path
src_file_path = r'C:\Metadata\trees_metadata.xml'
# Get the target item's Metadata object
trees_path = r'C:\Data\LocalArea.gdb\Trees'
tgt_item_md = md.Metadata(trees_path)
# Import the standard-format metadata content to the target item
if not tgt_item_md.isReadOnly:
    tgt_item_md.importMetadata(src_file_path)
    tgt_item_md.save()

将 FGDC CSDGM 格式的 XML 文件中的元数据内容导入到目标项目。

import arcpy
from arcpy import metadata as md
# Get the standard-format metadata XML file's object
src_csdgm_path = r'C:\Metadata\parks_csdgm.xml'
# Get the target item's Metadata object
parks_path = r'C:\Data\LocalArea.gdb\Parks'
tgt_item_md = md.Metadata(parks_path)
# Import the standard-format metadata content to the target item
if not tgt_item_md.isReadOnly:
    tgt_item_md.importMetadata(src_csdgm_path, 'FGDC_CSDGM')
    tgt_item_md.save()
exportMetadata (outputPath, {metadata_export_option}, {metadata_removal_option}, {customStylesheetPath})
参数说明数据类型
outputPath

输出 XML 文件。

String
metadata_export_option

用于指定导出项目元数据的方式。该值将指示输出 XML 文件将使用的 XML 格式。可将项目的 ArcGIS 元数据内容转换为相应 XML 格式。

  • CUSTOM 自定义 XSLT 样式表将用于将项目中存储的元数据内容从 ArcGIS 元数据转换为另一种 XML 格式。
  • FGDC_CSDGM 导出的元数据文档将以 FGDC CSDGM XML 格式存储内容。
  • ISO19139导出的元数据文档将以 ISO 19139 XML 格式存储内容。输出文件中使用的 GML 命名空间适用于 2007 版本的 ISO 19139 XML 模式:http://www.opengis.net/gml
  • ISO19139_GML32导出的元数据文档将以 ISO 19139 XML 格式存储内容。输出文件中使用的 GML 命名空间适用于 2012 版本的 ISO 19139 XML 模式:http://www.opengis.net/gml/3.2
  • ISO19115_ 3导出的元数据文档将以 ISO 19115-3 XML 格式存储内容。

(默认值为 ISO19139)

String
metadata_removal_option

用于指定在导出过程中是否从项目的元数据中移除敏感信息。该值用于指示将滤出的内容。将导出其余元数据内容。

  • EXACT_COPY 在将元数据内容导出为标准元数据格式之前,不会对其进行过滤。将导出所有内容,其中包括可能存在的任何敏感信息。
  • REMOVE_ALL_SENSITIVE_INFO 如果存在此信息,则将对元数据内容进行过滤以移除本地文件路径、数据库连接信息以及不以 http 或 https 开头的 URL 等。将导出其余元数据内容。
  • REMOVE_MACHINE_NAMES 将过滤元数据内容以从 UNC 路径中移除计算机名称(如果存在)。将导出其余元数据内容。

(默认值为 REMOVE_ALL_SENSITIVE_INFO)

String
customStylesheetPath

本地或网络文件路径或者 URL,用于标识将用于将元数据导出为自定义 XML 格式的自定义 XSLT 样式表。仅在 metadata_export_optionCUSTOM 时才会考虑此参数中的值。如果是 URL,则将下载引用的文件,并将使用下载的文件。

String

项目的元数据将以 ArcGIS 元数据 XML 格式存储。项目的元数据将转换为 metadata_export_option 参数标识的符合标准的元数据 XML 格式。生成的 XML 文档将保存到一个 XML 文件。

在转换项目的元数据之前,可以选择是否过滤项目的 ArcGIS 元数据内容。例如,如果您打算与组织外的用户共享导出的元数据文档,则最好排除任何可能视为对组织敏感的信息。过滤的内容量将由 metadata_removal_option 参数确定。

在导出过程开始之前,您可能需要同步项目的元数据,以使其包含数据的最新属性。

同步项目的属性,然后导出最新的元数据内容。将项目的元数据导出为标准元数据 XML 格式,以在 ArcGIS 平台外共享此信息。

import arcpy
from arcpy import metadata as md
# Get the source item's Metadata object
streets_path = r'C:\Data\LocalArea.gdb\Streets'
src_item_md = md.Metadata(streets_path)
# Synchronize the item's metadata now
src_item_md.synchronize('ALWAYS')
# Export the item's metadata using the default export format (ISO 19139)
# after removing sensitive information from the metadata, if it exists.
export_19139_path = r'C:\MetadataExport\streets_19139.xml'
src_item_md.exportMetadata(export_19139_path,
                           metadata_removal_option='REMOVE_ALL_SENSITIVE_INFO')
# Export the item's metadata to the FGDC CSDGM XML format as well
export_csdgm_path = r'C:\MetadataExport\streets_csdgm.xml'
src_item_md.exportMetadata(export_csdgm_path, 'FGDC_CSDGM',
                           'REMOVE_ALL_SENSITIVE_INFO')
# Export the metadata using the specified custom XSLT stylesheet, for 
# example, to generate a custom HTML format for display outside ArcGIS
export_custom_path = r'C:\MetadataExport\streets_custom.html'
custom_html_export_path = r'C:\MetadataExport\custom_html_output.xslt'
src_item_md.exportMetadata(export_custom_path, 'CUSTOM',
                           'REMOVE_ALL_SENSITIVE_INFO',
                           custom_html_export_path)
reload ()

使用项目的元数据初始化 Metadata 对象。在工作进程中,项目的元数据内容可能会由外部进程修改。此函数可用于将项目的当前元数据内容重新加载到 Metadata 对象。例如,如果您使用 ArcGIS Pro 元数据编辑器将更改保存到项目的元数据,则更改不会立即反映在您正在使用的 Python 窗口中的 Metadata 对象中。使用此函数可在继续工作之前重新初始化 Metadata 对象。

从源重新加载项目的元数据以查看最新更改。此脚本专为在 Python 窗口中工作而设计。

import arcpy
from arcpy import metadata as md
# Get a map layer's Metadata object
aprx = arcpy.mp.ArcGISProject("CURRENT")
currentMap = aprx.activeMap
first_lyr = currentMap.listLayers()[0]
lyr_metadata = first_lyr.metadata
# Print the original set of tags
lyr_tags_orig = lyr_metadata.tags
if lyr_tags_orig is not None:
    print('Original tags: ' + lyr_tags_orig)
else:
    print('Original tags: None')
# Update tags in the item's metadata, but don't save the changes
lyr_metadata.tags = 'Apple, Banana, Cherry'
# Print the updated set of tags
print('Updated tags: ' + lyr_metadata.tags)
# Reloading metadata lets you access updates made externally,
# but you will lose any unsaved changes
lyr_metadata.reload()
# Print the reloaded set of tags
lyr_tags_reload = lyr_metadata.tags
if lyr_tags_reload is not None:
    print('Reloaded tags: ' + lyr_tags_reload)
else:
    print('Reloaded tags: None')
save ()

当您对存储在 Metadata 对象中的元数据内容进行更改时,这些更改不会自动保存回 Metadata 派生对象的源项目。 更改仅在使用 save 函数时才会保存回项目。 您必须具有相应权限才能更新原始项目的元数据。

例如,如果 Metadata 对象表示当前工程中地图的元数据,则此函数将更新地图的元数据。 对于存储在工程中的项目,只有在保存工程后,才会真正保存元数据更改;如果工程在未保存时即关闭,则您对地图元数据所做的更改将丢失。

如果创建了一个新的空 Metadata 对象,并且您将内容添加到此新的元数据文档中,则此函数将失败并显示一条错误消息,因为该函数未与现有项目关联。 将 Metadata 对象分配给项目以使用在 Metadata 对象中定义的内容更新其元数据。

更新项目元数据中的标签。 您必须具有相应权限才能更新项目的元数据。

import arcpy
from arcpy import metadata as md

# Get the target item's Metadata object
hydrants_path = r'C:\Data\LocalArea.gdb\Hydrants'
item_md = md.Metadata(hydrants_path)

# Save the changes if you have privileges in the geodatabase to do so
if not item_md.isReadOnly:
    # Update the tags in the item's metadata, then save the changes
    item_md.tags = 'One, Two, Three'
    item_md.save()
saveAsUsingCustomXSLT (outputPath, customStylesheetPath)
参数说明数据类型
outputPath

输出 XML 文件。

String
customStylesheetPath

本地或网络文件路径或 URL,用于标识将用于转换项目的 ArcGIS 元数据的自定义 XSLT 样式表。如果是 URL,则将下载引用的文件,并将使用下载的文件。

String

使用自定义 XSLT 样式表修改项目的 ArcGIS 元数据并将结果保存到 XML 文件。然后,将更新后的元数据内容保存回原始项目。本示例中使用的自定义 XSLT 样式表是 ArcMap 随附的样式表,用于从项目的元数据中移除项目的地理处理历史记录,并将在 ArcGIS Pro 中继续工作。

import arcpy
from arcpy import metadata as md
# Get the item's Metadata object
street_lights_path = r'C:\Data\LocalArea.gdb\StreetLights'
src_item_md = md.Metadata(street_lights_path)
# Save the item's metadata to an xml file using a custom XSLT
target_file_path = r'C:\MetadataInternal\street_lights_no_gp_history.xml'
custom_xslt_path = r'C:\MetadataInternal\remove geoprocessing history.xslt'
src_item_md.saveAsUsingCustomXSLT(target_file_path, custom_xslt_path)
# Save the modified ArcGIS metadata output back to the source item
tgt_item_md = md.Metadata(target_file_path)
src_item_md.copy(tgt_item_md)
src_item_md.save()
saveAsXML (outputPath, {metadata_save_as_xml_option})
参数说明数据类型
outputPath

输出 XML 文件。输出文件将包含以 ArcGIS Metadata XML 格式存储的元数据。

String
metadata_save_as_xml_option

指定在将项目的元数据保存到独立的元数据 XML 文件的流程中,是否从项目的元数据中移除信息。该值指示从项目的元数据中滤出的内容量和内容类型。

  • EXACT_COPY 在将项目的当前元数据内容保存到输出文件之前,不会对其进行过滤。
  • REMOVE_ALL_SENSITIVE_INFO 过滤项目的元数据内容,以移除本地文件路径、数据库连接信息、不以 http 或 https 开头的 URL 等(如果存在此类信息)。然后将其余元数据内容保存到输出文件中。
  • REMOVE_MACHINE_NAMES 过滤项目的元数据内容,以从 UNC 路径中移除计算机名称(如果存在)。然后将其余元数据内容保存到输出文件中。
  • TEMPLATE 过滤项目的元数据内容,以从其元数据中移除描述项目属性的内容(如果存在此类信息)。然后将其余元数据内容保存到输出文件中。此文件适合用作元数据模板的基础。

(默认值为 EXACT_COPY)

String

将项目的 ArcGIS 元数据的两个副本保存到磁盘。一个副本与随项目存储的元数据完全匹配,另一个文件的元数据内容已过滤并移除敏感内容。

import arcpy
from arcpy import metadata as md
# Get the item's Metadata object
street_lights_path = r'C:\Data\LocalArea.gdb\StreetLights'
src_item_md = md.Metadata(street_lights_path)
# Save a copy of the item's metadata to an xml file as a backup.
# This copy is for internal use only.
target_copy_path = r'C:\MetadataInternal\street_lights_copy.xml'
src_item_md.saveAsXML(target_copy_path)
# Save a version of the item's metadata without sensitive information
# separately so it can be shared externally.
target_filtered_path = r'C:\MetadataExternal\street_lights_no_sensitive.xml'
src_item_md.saveAsXML(target_filtered_path, 'REMOVE_ALL_SENSITIVE_INFO')
synchronize (metadata_sync_option, interval)
参数说明数据类型
metadata_sync_option

指定使用数据的当前属性更新元数据的方式以及元素对象。

部分元数据元素应始终派生自项目的属性,例如其空间参考。部分元数据元素可以通过项目的属性进行初始化,但通常由人员进行更新,以便在共享元数据之前更好地描述项目,例如项目的标题。

创建元数据元素并通过同步初始化其值时,存储值的 XML 元素具有一个 Sync 属性,且其值设置为 True。通常,仅在 Sync 属性设置为 True 时才会同步元数据元素的值。使用 ArcGIS 元数据编辑器更新元素的值时,Sync 属性已删除。或者,应用程序可以将属性的值更改为 False 以获得同样的结果。

  • ACCESSED属性会在项目的元数据中针对 Sync 属性值为 True 的相应元数据元素进行更新。如果自上次同步项目的元数据内容以来,至少经过了间隔参数指定的时间,则将进行更新。如果不存在元数据,则创建元数据。
  • ALWAYS属性会在项目的元数据中针对 Sync 属性值为 True 的相应元数据元素进行更新。使用该函数时将相应更新元数据内容;如果提供了时间,则不使用由间隔参数指定的时间。如果不存在元数据,则创建元数据。
  • CREATED仅当项目的元数据尚未存在时,才创建元数据并向其中添加属性。
  • NOT_CREATED仅更新现有元数据中的属性。如果元素的 Sync 属性值为 True,则更新相应的元素值。
  • OVERWRITE无论项目元数据元素的 Sync 属性值为何或存在与否,都会更新项目元数据中所有可同步的属性值。使用此函数后,所有已更新的元数据元素都会有一个值为 TrueSync 属性。例如,将元数据从一个项目复制到另一个项目后,使用此选项可以适合项目的方式初始化所有属性,包括标题,应更改标题以匹配新项目的名称,而不是使用描述旧项目的标题。使用该函数时将相应更新元数据内容;如果提供了时间,则不使用由间隔参数指定的时间。如果不存在元数据,则创建元数据。
  • SELECTIVE通常与 OVERWRITE 选项相同。但是,标题和内容类型元数据元素的值不会更新。例如,如果您将标准格式的元数据文档导入项目,用于描述项目数据,则导入文档中的标题会确实应用于项目,并且无法覆盖。项目元数据中的所有其他属性将以适合于项目的方式进行初始化。使用该函数时将相应更新元数据内容;如果提供了时间,则不使用由间隔参数指定的时间。如果不存在元数据,则创建元数据。
String
interval

再次同步项目前应经过的秒数。例如,如果 Metadata 对象表示地理数据库中的要素类,并且另一个用户最近同步了项目的元数据,则除非经过了足够的时间,否则此函数将不会再次同步项目的元数据内容。提供零值将导致立即再次同步项目的元数据。

仅当 metadata_sync_option 值为 ACCESSEDCREATEDNOT_CREATED 时才会考虑间隔。

Integer

如果 Metadata 对象表示要素类的元数据,则此函数将更新元数据内容以反映数据的当前属性,例如,其所含要素数、其空间参考、当前属性列表等。如果项目不含任何元数据内容,则可能会/不会为项目创建元数据内容,具体取决于 metadata_sync_option。另外,是否考虑间隔时间具体取决于 metadata_sync_option

部分元数据元素应始终派生自项目的属性,例如其空间参考。部分元数据元素可以通过项目的属性进行初始化,但通常由人员进行更新,以便在共享元数据之前更好地描述项目,例如项目的标题。metadata_sync_option 用于确定更新的项目属性,以及如果已在该元素中输入值,则如何处理元数据元素。

将元数据内容从 ISO 19139 格式的 XML 文件导入要素类,并更新元数据中记录的要素类属性,以使其与项目的当前属性相匹配。

import arcpy
from arcpy import metadata as md
# Get the standard-format metadata XML file's object
src_19139_path = r'C:\Metadata\street_lights_19139.xml'
# Get the target item's Metadata object
street_lights_path = r'C:\Data\LocalArea.gdb\StreetLights'
tgt_item_md = md.Metadata(street_lights_path)
if not tgt_item_md.isReadOnly:
    # Import standard-format metadata content to the target item 
    tgt_item_md.importMetadata(src_19139_path, 'ISO19139_UNKNOWN')
    tgt_item_md.save()
    
    # Use SELECTIVE so you don't lose the imported title
    # other properties will update on synchronize as data changes
    tgt_item_md.synchronize('SELECTIVE')
upgrade (metadata_upgrade_option)
参数说明数据类型
metadata_upgrade_option

指定如何将项目的元数据升级为 ArcGIS 元数据格式。提供此选项旨在更新使用 ArcGIS Desktop 8.x 或 9.x 创建的元数据。

  • ESRI_ISO 包含在项目元数据中的 ESRI-ISO 格式元数据内容将升级为 ArcGIS 元数据格式。已使用 ArcGIS Desktop ISO 元数据向导编辑器对此元数据内容进行了创作。
  • FGDC_CSDGM 包含在项目元数据中的 FGDC CSDGM 格式元数据内容将升级为 ArcGIS 元数据格式。已使用 ArcGIS Desktop FGDC CSDGM 元数据向导编辑器对此元数据内容进行了创作。
String

使用 ArcGIS Desktop 8.x 或 9.x 创建的 Metadata 文档可升级为 ArcGIS 元数据格式。

将已存档项目的 ArcGIS Desktop 9.x 元数据内容升级为 ArcGIS 元数据格式。

import arcpy
from arcpy import metadata as md
# Get the item's Metadata object
archive_item_path = r'C:\Data\Old.gdb\Buildings'
archive_item_md = md.Metadata(archive_item_path)
# Upgrade the item's metadata content to the ArcGIS metadata format
archive_item_md.upgrade('FGDC_CSDGM')

代码示例

元数据示例

访问通过元数据描述项目的信息。

import arcpy
from arcpy import metadata as md
highways_path = r'C:\Data\LocalArea.gdb\Highways'
item_md = md.Metadata(highways_path)
print("Title:", item_md.title)
print("Tags:", item_md.tags)
print("Summary:", item_md.summary)
print("Description:", item_md.description)
print("Credits:", item_md.credits)
print("Access Constraints:", item_md.accessConstraints)