需要引入DataSourceRaster命名空間。
具體步驟如下:
①:利用工作控件工廠抽象類定義接口變量,利用工作空間工廠的子類RatserWorkspaceFactory對應的組件類RasterWorkspaceFactoryClass實例化該接口變量。
②:定義並實例化工作空間變量,定義並實例化柵格工作空間變量;
③:定義柵格數據集,並利用所選柵格數據文件進行實例化,判斷該文件是否具有金字塔,若沒有,則創建金字塔,以提高大數據量圖像的顯示效率;
④:定義柵格數據,柵格數據層和數據層,並向MapControl控件中添加數據層數據。
具體代碼如下:
System.Windows.Forms.OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.tif|*.tif";
ofd.ShowDialog();
string filePath = ofd.FileName;
//此兩個路徑和文件名作為參數:
string pathName = System.IO.Path.GetDirectoryName(filePath);
string fileName = System.IO.Path.GetFileName(filePath);
//定義工作空間工廠並實例化:
IWorkspaceFactory pWSF;
pWSF = new RasterWorkspaceFactoryClass();
//
IWorkspace pWS;
pWS = pWSF.OpenFromFile(pathName,0);
IRasterWorkspace pRWS;
pRWS = pWS as IRasterWorkspace;
IRasterDataset pRasterDataset;
pRasterDataset = pRWS.OpenRasterDataset(fileName);
//影像金字塔的判斷與創建
IRasterPyramid pRasPyrmid;
pRasPyrmid = pRasterDataset as IRasterPyramid;
if(pRasPyrmid!=null)
{
if(!(pRasPyrmid.Present))
{
pRasPyrmid.Create();
}
}
IRaster pRaster;
pRaster = pRasterDataset.CreateDefaultRaster();
IRasterLayer pRasterLayer;
pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromRaster(pRaster);
ILayer pLayer = pRasterLayer as ILayer;
axMapControl1.AddLayer(pLayer,0);