您的位置:首页 > 编程语言 > C#

C#+ArcEngine加载影像Raster栅格数据,并与ArcGIS一样判断是否创建金字塔。

2018-03-21 10:07 721 查看
    第一步,   通过对话框的方式,打开路径找文件
            pOpenFileDialog.CheckFileExists = true;
            pOpenFileDialog.Title = "打开Raster栅格文件";
            pOpenFileDialog.Filter = "栅格文件(*.*)|*.bmp;*.tif;*.jpg;*.img|(*.bmp)|*.bmp|(*.tif)|*.tif(*.jpg)|*.jpg|(*.img)*.img";
            pOpenFileDialog.ShowDialog();
            string RasterFileName = pOpenFileDialog.FileName;
            if (RasterFileName == "")
                return;
            string Path = System.IO.Path.GetDirectoryName(RasterFileName);  //获取文件路径
            string Name = System.IO.Path.GetFileName(RasterFileName);       //获取栅格文件名

            //第二步,建立工作空间工厂  (工作空间工厂、工作空间、栅格工作空间)三级,然后实例化栅格要素数据集
            IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactory();
            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Path, 0);
            IRasterWorkspace pRasterWorkspace = pWorkspace as IRasterWorkspace;
            IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(Name);//
           
            第三步,是否创建金字塔的判断 
   DialogResult dr=MessageBox.Show("是否创建金字塔?", "提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question);    //注意:这里的参数列表可以更换别的,YesNo可以改成OKCancel确定取消等等。
            if (dr==DialogResult.OK)   //当点击“是”的时候,创建金字塔
            {
                //影像金字塔的判断与创建,使用IRasterPyramid3接口
                IRasterPyramid3 pRasPyrmid;
                pRasPyrmid = pRasterDataset as IRasterPyramid3;    //接口转换
                if (pRasPyrmid != null)
                {
                    if (!(pRasPyrmid.Present))
                    {
                        pRasPyrmid.Create();//创建金字塔
                    }
                }
            }
如图:                
            


            //当点击否的时候,直接加载到地图。
            IRaster pRaster;
            pRaster = pRasterDataset.CreateDefaultRaster();//
            IRasterLayer pRasterLayer;
            pRasterLayer = new RasterLayer();   //此处要更改Carto类库的嵌入类型为false
            pRasterLayer.CreateFromRaster(pRaster);//
            ILayer pLayer = pRasterLayer as ILayer;
            axMapControl1.AddLayer(pLayer, 0);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: