有用户问过这样一个问题,如何获取镶嵌数据集中的某一个栅格数据的物理路径也就是原来的路径,我获取了每一个栅格数据然后用工作空间的路径+栅格数据的名称,但是这个得到的结果是不正确的,这周向esri的smirith请教后才恍然大悟,,看来我对镶嵌数据集的理解还不够深刻。
因为遇到过,所以铭记自信;又因为解决了,所以分享,感谢smrithi的指导
private void button2_Click(object sender, EventArgs e) { IWorkspace pFileWs = GetSDEWorkspace("E:\\影像\\Geodatabase.gdb");
IMosaicDataset pMosaic = OpenMosaicDataset(pFileWs, "test1");
ITable pTable = pMosaic.Catalog as ITable;
int i = pTable.FindField("RASTER");
ICursor pCursor = pTable.Search(null, false);
IRow pRow = pCursor.NextRow();
while (pRow != null) {
IRasterCatalogItem pRasterCatalogItem = (IRasterCatalogItem)pRow;
IRasterDataset pRasterdataset = pRasterCatalogItem.RasterDataset;
//每一个item不是Raseter所以我用工作空间路径+栅格名称是错误的,用了这个接口就正确了 IFunctionRasterDataset pFunctionRD = pRasterdataset as IFunctionRasterDataset;
IArray pArray = pFunctionRD.MemberRasterDatasets;
for (int n = 0; n < pArray.Count; n++) { IRasterDataset pFunRst= pArray.get_Element(n) as IRasterDataset; string sName = pFunRst.CompleteName;
}
IDataset pDs = pRasterdataset as IDataset;
string s = pDs.Workspace.PathName;
pRow = pCursor.NextRow(); } }
注:
Smrithi为Esri美国负责Raster Type扩展的开发人员