C#+AE 用MapControl加載柵格格式文件


需要引入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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM