您的位置:首页 > 其它

ArcEngle中空值(Null \ Nodata)值的处理

2015-07-17 09:37 197 查看
当两个栅格进行叠加,有时会有一部分没有数据,Value为NoData,nodata+任何数=nodata,因此当需要对栅格空值数据赋值时,要采用条件查询函数将NoData的地方进行赋值。

一、ArcEngle中空值赋值

在Engine中未发现有内部函数,只能用GP工具处理。

///<summary>
///空值处理 Author:AllenRobin http://gisrsman.cnblogs.com ///</summary>
private static void Null2Number(IGeoDataset pRaster, string outPath,double number)
{
//检查出为空的位置(null区位1,非null区为0)
string isNullPath = System.IO.Path.Combine(Application.StartupPath, "isnull.tif");
Geoprocessor gp = new Geoprocessor();    //初始化Geoprocessor
gp.OverwriteOutput = true;                     //允许运算结果覆盖现有文件
ESRI.ArcGIS.SpatialAnalystTools.IsNull isnullgp = new ESRI.ArcGIS.SpatialAnalystTools.IsNull();
isnullgp.in_raster = pRaster;
isnullgp.out_raster = isNullPath;
gp.Execute(isnullgp, null);

//将空(即是1)的设为0,其余设为原始值
Geoprocessor gp1 = new Geoprocessor();
gp1.OverwriteOutput = true;
ESRI.ArcGIS.SpatialAnalystTools.Con congp = new ESRI.ArcGIS.SpatialAnalystTools.Con();
congp.in_conditional_raster = isNullPath;
congp.out_raster = outPath;
congp.where_clause = "Value = 1";//value=1的地方即是查询出来的Null的地方
congp.in_false_raster_or_constant = pRaster;
congp.in_true_raster_or_constant =number;//将null改为0或其他值
gp1.Execute(congp, null);
}


二、ArcGIS栅格数据空值处理

参考在ArcMap中的处理

---------------------------------------------------------------------------------

当两个栅格进行叠加,有时会有一部分没有数据,Value为NoData,nodata+任何数=nodata,因此当需要对栅格空值数据赋值时,要采用条件查询函数将NoData的地方进行赋值。

1. 空值(Nodata)赋值:

在栅格计算器中输入函数表达式 CON(ISNULL([raster]),0,[raster])。其中[raster]是输入栅格名称。会自动生成一个以输入栅格图像的外接长方形为范围的栅格图像,非空的地方为栅格值,NoData的地方为0。

2. 特定值转为空值
使用函数表达式setnull可将特定的栅格值赋值为空值。

setnull([raster==1],[raster]),将raster中值为1的数据赋为空,其他保留原值。

引自:ArcGIS栅格数据空值处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: