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