ArcGIS Pro SDK (五)内容 5 元数据

发布于:2024-06-29 ⋅ 阅读:(10) ⋅ 点赞:(0)

ArcGIS Pro SDK (五)内容 5 收藏夹

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 获取其 IMetadata 接口

Item gdbItem = ItemFactory.Instance.Create(@"C:\projectAlpha\GDBs\regionFive.gdb");
IMetadata gdbMetadataItem = gdbItem as IMetadata;

2 获取项目的元数据:获取XML

string gdbXMLMetadataXmlAsString = string.Empty;
gdbXMLMetadataXmlAsString = await QueuedTask.Run(() => gdbMetadataItem.GetXml());
//检查元数据
if (!string.IsNullOrEmpty(gdbXMLMetadataXmlAsString))
{
    //使用元数据
}

3 设置项目的元数据:设置XML项

await QueuedTask.Run(() =>
                     {
                         var xml = System.IO.File.ReadAllText(@"E:\Data\Metadata\MetadataForFeatClass.xml");
                         //如果元数据无法更改,是否会抛出InvalidOperationException异常
                         //所以先检查“CanEdit”
                         所以先选择“CanEdit”
                             if (featureClassMetadataItem.CanEdit())
                                 featureClassMetadataItem.SetXml(xml);
                     });

4 检查元数据是否可以编辑:可以编辑

bool canEdit1;
//在调用SetXml之前调用CanEdit
await QueuedTask.Run(() => canEdit1 = metadataItemToCheck.CanEdit());

5 使用项目的当前属性更新元数据:同步

string syncedMetadataXml = string.Empty;
await QueuedTask.Run(() => syncedMetadataXml = metadataItemToSync.Synchronize());

6 从源项目的元数据复制元数据:复制元数据从项目

Item featureClassItem = ItemFactory.Instance.Create(@"C:\projectAlpha\GDBs\regionFive.gdb\SourceFeatureClass");
await QueuedTask.Run(() => metadataItemImport.CopyMetadataFromItem(featureClassItem));

7 从当前项目的元数据中删除某些内容:删除元数据内容

Item featureClassWithMetadataItem = ItemFactory.Instance.Create(@"C:\projectBeta\GDBs\regionFive.gdb\SourceFeatureClass");
//从项目的元数据中删除缩略图内容
await QueuedTask.Run(() => featureClassWithMetadataItem.DeleteMetadataContent(MDDeleteContentOption.esriMDDeleteThumbnail));

8 使用导入的元数据更新元数据 - 输入路径可以是包含元数据的项目的路径,也可以是 XML 文件的 URI:导入元数据

//输入路径可以是元数据项的路径,也可以是XML文件的URI
IMetadata metadataItemImport1 = null;
await QueuedTask.Run(() => metadataItemImport1.ImportMetadata(@"E:\YellowStone.gdb\MyDataset\MyFeatureClass", MDImportExportOption.esriCurrentMetadataStyle));

9 使用导入的元数据更新元数据:导入元数据

//输入路径可以是元数据项的路径,也可以是XML文件的URI
await QueuedTask.Run(() => metadataItemImport2.ImportMetadata(@"E:\YellowStone.gdb\MyDataset\MyFeatureClass", MDImportExportOption.esriCustomizedStyleSheet, @"E:\StyleSheets\Import\MyImportStyleSheet.xslt"));

10 导出当前选定项目的元数据:导出元数据

await QueuedTask.Run(() => metadataItemExport1.ExportMetadata(@"E:\Temp\OutputXML.xml", MDImportExportOption.esriCurrentMetadataStyle, MDExportRemovalOption.esriExportExactCopy));

11 导出当前选定项目的元数据:导出元数据

await QueuedTask.Run(() => metadataItemExport2.ExportMetadata(@"E:\Temp\OutputXML.xml", MDImportExportOption.esriCustomizedStyleSheet, MDExportRemovalOption.esriExportExactCopy, @"E:\StyleSheets\Export\MyExportStyleSheet.xslt"));

12 将当前项目的元数据另存为 XML:将元数据另存为 XML

await QueuedTask.Run(() => metadataItemToSaveAsXML.SaveMetadataAsXML(@"E:\Temp\OutputXML.xml", MDSaveAsXMLOption.esriExactCopy));

13 将当前项目的元数据另存为 HTML:将元数据另存为HTML

await QueuedTask.Run(() => metadataItemToSaveAsHTML.SaveMetadataAsHTML(@"E:\Temp\OutputHTML.htm", MDSaveAsHTMLOption.esriCurrentMetadataStyle));

14 使用自定义 XSLT 保存当前项目的元数据:保存元数据作为使用自定义 XSLT

await QueuedTask.Run(() => metadataItemToSaveAsUsingCustomXSLT.SaveMetadataAsUsingCustomXSLT(@"E:\Data\Metadata\CustomXSLT.xsl", @"E:\Temp\OutputXMLCustom.xml"));

15 升级当前项目的元数据:升级元数据

var fgdcItem = ItemFactory.Instance.Create(@"C:\projectAlpha\GDBs\testData.gdb");
await QueuedTask.Run(() => fgdcItem.UpgradeMetadata(MDUpgradeOption.esriUpgradeFgdcCsdgm));

网站公告

今日签到

点亮在社区的每一天
去签到