ArcEngine加载数据及处理代数计算代码总结

近期我完成了关于ArcGis数据的处理(包括公式运算)方面的项目,在此小结一下。

1.关于ArcGis 的Grid数据的读取:

//获取temperature数据
        public ESRI.ArcGIS.Geodatabase.IRasterDataset GetTemperatureGrid(int year,int month)
        {
            string inPath;
            inPath = DATA_FILE + "temperature";
            string inName = "";
            inName = "temp" + year + "_" + month;
            IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();
            IWorkspace workspace = workspaceFactory.OpenFromFile(inPath, 0); //inPath栅格数据存储路径


            IRasterWorkspace rastWork = (IRasterWorkspace)workspace;
            IRasterDataset rastDataset = rastWork.OpenRasterDataset(inName);//inName栅格文件名
            return rastDataset;
        }

2.关于ArcGIs中的代数运算,即是Raster Calculator功能:

/// <summary>
        /// Tmean
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        public void GenerateTmeanGrid(int year, int month)
        {
            try
            {
                SpecialData specialData = new SpecialData();
                IRasterDataset maxtRasterDataset = specialData.GetMaxtGrid(year, month);//获取maxt
                IRasterDataset mintRasterDataset = specialData.GetMintGrid(year, month);//获取mint


                IGeoDataset maxtGeoDataset = maxtRasterDataset.CreateDefaultRaster() as IGeoDataset;
                IGeoDataset mintGeoDataset = mintRasterDataset.CreateDefaultRaster() as IGeoDataset;


                IMapAlgebraOp rsalgebra = new RasterMapAlgebraOpClass();
                rsalgebra.BindRaster(maxtGeoDataset, "maxtraster");
                rsalgebra.BindRaster(mintGeoDataset, "mintraster");
                
                IGeoDataset sumGeoDateset = rsalgebra.Execute("[maxtraster] + [mintraster]");


                rsalgebra.BindRaster(sumGeoDateset, "pRaster");
                IGeoDataset rsalgebrares = rsalgebra.Execute("[pRaster] / 2");
                IRasterLayer OUTlayer = new RasterLayerClass();
                OUTlayer.CreateFromRaster(rsalgebrares as IRaster);


                IWorkspaceFactory WF = new RasterWorkspaceFactoryClass();
                IWorkspace rasterWorkspace = WF.OpenFromFile(TEMP_PATH+"Tmean", 0);


                ///如果有文件了的话,需要先删除文件
                Singleton.FileDelete("Tmean" + year + "_" + month, rasterWorkspace);


                ISaveAs saveAs = (ISaveAs)(OUTlayer.Raster);
                saveAs.SaveAs("Tmean" + year + "_" + month, rasterWorkspace, "GRID");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

以上即可完成数据的计算及保存。


你可能感兴趣的:(数据,C#,ArcEngine)