Skip to main content

Metadata

汇总

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

语法

Metadata({uri})

名称 说明 数据类型

uri

(可选)

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

String

属性

名称 说明 数据类型

accessConstraints

(读取和写入)

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

String

credits

(读取和写入)

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

String

description

(读取和写入)

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

此属性可包含纯文本,也可包含 HTML 片段。在 ArcGIS Desktop 或 ArcGIS 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 对象。例如,这支持将元数据从一个项目复制到另一个项目。

名称 说明 数据类型

inputMetadata

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

Object

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

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 对象中删除指示内容。

名称 说明 数据类型

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.

  • GPHISTORY—The 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.

  • THUMBNAIL—ArcGIS 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

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

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 标识的项目导入到 Metadata 对象。

名称 说明 数据类型

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

如果不确定文件的格式,请从标准格式的 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})

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

名称 说明 数据类型

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

同步项目的属性,然后导出最新的元数据内容。将项目的元数据导出为标准元数据 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 对象。

从源重新加载项目的元数据以查看最新更改。此脚本专为在 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 对象派生的原始项目。

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

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)

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

名称 说明 数据类型

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})

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

名称 说明 数据类型

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 对象。

名称 说明 数据类型

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

将元数据内容从 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 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)