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 (只读) |
检查是否可以更新由 |
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 元数据格式)创建并填充的 |
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
|
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,用于标识将导入到 |
String |
|
metadata_import_option (可选) |
此选项用于确定将内容从源项目导入到
(默认值为 DEFAULT) |
String |
|
customStylesheetPath (可选) |
本地或网络文件路径或 URL,用于标识将用于导入自定义 XML 格式的元数据的自定义 XSLT 样式表。仅当 |
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 格式。
(默认值为 ISO19139) |
String |
|
metadata_removal_option (可选) |
用于指定在导出过程中是否从项目的元数据中移除敏感信息。该值用于指示将滤出的内容。将导出其余元数据内容。
(默认值为 REMOVE_ALL_SENSITIVE_INFO) |
String |
|
customStylesheetPath (可选) |
本地或网络文件路径或者 URL,用于标识将用于将元数据导出为自定义 XML 格式的自定义 XSLT 样式表。仅在 |
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) |
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 元素具有一个
|
String |
|
interval |
再次同步项目前应经过的秒数。例如,如果 仅当 |
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 创建的元数据。
|
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)