本来一开始我的想法是把栅格计算器中的几种功能都封装起来,最后拼成栅格计算器的完整功能,但在实践过程中我不得不面对,这样造成的代码的复杂度上升,公式只能一步步计算的问题。最终使用了GP工具中的RasterCalculator。
注意:
错误引用: ESRI.ArcGIS.SpatialAnalyst.RasterCalculator
正确引用:ESRI.ArcGIS.SpatialAnalystTools.RasterCalculator
话不多说,看gp工具栅格计算器执行代码如下:
/// <summary>/// 栅格计算器/// </summary>/// <param name="expression">执行表达式</param>/// <param name="output_raster">输出路径</param>/// <param name="cellSize">输出单元格大小</param>public void RasterCalculator(string expression, string output_raster, string cellSize){Geoprocessor gp = new Geoprocessor();try{Convert.ToDouble(cellSize);gp.SetEnvironmentValue("cellSize", cellSize);}catch { }gp.OverwriteOutput = true;ESRI.ArcGIS.SpatialAnalystTools.RasterCalculator RasterCalculator = new ESRI.ArcGIS.SpatialAnalystTools.RasterCalculator();RasterCalculator.expression = expression;RasterCalculator.output_raster = output_raster;gp.Execute(RasterCalculator, null);}
实例
之后我比对ArcGIS中的栅格计算器做了一下。界面如下:
链接如下:
C#ArcEngine栅格计算器(仿ArcGIS栅格计算器制作)-C#文档类资源-CSDN下载