打开栅格文件与打开shp文件的过程类似,同为从数据所在的文件夹中创建工作空间,再从工作空间中根据文件名打开数据文件
用到的引用:
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesRaster;
步骤:
1、打开文件路径
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "png文件|*png";
if (pOpenfileDialog.ShowDialog() == DialogResult.OK)
{
string path = pOpenfileDialog.FileName; //打开文件
2、获得文件名和文件夹路径
string pFillPath = System.IO.Path.GetDirectoryName(path);
string pFillName = System.IO.Path.GetFileName(path);
3、创建工作空间工厂对象
IWorkspaceFactory pWorkspaceFactor = new RasterWorkspaceFactory();
4、通过文件夹路径创建栅格工作空间
IRasterWorkspace pRasterWorkspace = pWorkspaceFactor.OpenFromFile(pFillPath,0) as IRasterWorkspace;
5、使用栅格工作空间打开的OpenRasterDataset方法打开栅格数据集
IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pFillName);
6、将栅格数据集添加到显示
通过IRasterLayer的CreateFromDataset方法,将栅格数据集转为栅格图层
//IRaster pRaster = pRasterDataset.CreateDefaultRaster();
IRasterLayer pRL = new RasterLayerClass();
pRL.CreateFromDataset(pRasterDataset);
ILayer pLayer = pRL as ILayer;
axMapControl1.AddLayer(pLayer);
全部代码:
private void 打开栅格ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "png文件|*png";
if (pOpenfileDialog.ShowDialog() == DialogResult.OK)
{
string path = pOpenfileDialog.FileName; //打开文件
string pFillPath = System.IO.Path.GetDirectoryName(path);
string pFillName = System.IO.Path.GetFileName(path);
//打开工作空间
IWorkspaceFactory pWorkspaceFactor = new RasterWorkspaceFactory();
IRasterWorkspace pRasterWorkspace = pWorkspaceFactor.OpenFromFile(pFillPath,0) as IRasterWorkspace;
//打开栅格文件
IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pFillName);
//将栅格文件添加到显示
//IRaster pRaster = pRasterDataset.CreateDefaultRaster();
IRasterLayer pRL = new RasterLayerClass();
pRL.CreateFromDataset(pRasterDataset);
ILayer pLayer = pRL as ILayer;
axMapControl1.AddLayer(pLayer);
}
}