ArcGIS Pro SDK (五)内容 5 收藏夹
目录
- ArcGIS Pro SDK (五)内容 5 收藏夹
-
- 1 获取其 IMetadata 接口
- 2 获取项目的元数据:获取XML
- 3 设置项目的元数据:设置XML项
- 4 检查元数据是否可以编辑:可以编辑
- 5 使用项目的当前属性更新元数据:同步
- 6 从源项目的元数据复制元数据:复制元数据从项目
- 7 从当前项目的元数据中删除某些内容:删除元数据内容
- 8 使用导入的元数据更新元数据 - 输入路径可以是包含元数据的项目的路径,也可以是 XML 文件的 URI:导入元数据
- 9 使用导入的元数据更新元数据:导入元数据
- 10 导出当前选定项目的元数据:导出元数据
- 11 导出当前选定项目的元数据:导出元数据
- 12 将当前项目的元数据另存为 XML:将元数据另存为 XML
- 13 将当前项目的元数据另存为 HTML:将元数据另存为HTML
- 14 使用自定义 XSLT 保存当前项目的元数据:保存元数据作为使用自定义 XSLT
- 15 升级当前项目的元数据:升级元数据
环境: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));