ArcGIS栅格数据SetNull IsNull Con函数

当两个栅格进行叠加,有时会有一部分没有数据,即用identify点击该区域,Value为NoData,而不是像其他非空区域一样有值。如果不进行处理的话,nodata数据跟其他图层做运算是会变为nodata。所以nodata区域要赋予0值,因为nodata任何数=nodata,因此当需要对栅格空值数据赋值时,要采用条件查询函数将NoData的地方进行赋值。

以下以arcgis10.0为例:

(1)方法是ArcTools->Spatial AnalystTools->Map Algebra
(2)输入算法表达式为:CON(ISNULL([raster]),0,[raster])。其中[raster]是你要处理的栅格图。

          该函数解释如下:

                            首先,isnull 函数是判断当前是否为null,即nodata,如果是则范围1,否则返回0;

                            其次,CON函数是一个条件函数(condition),他的参数一般有3个。第一个是包含了0或者1的逻辑图层,就如isnull返回的结果一样,第二个参数是指的满足条 

                            件时你要赋的值,该例子中就是说满足的我赋值为0,。那不满足的赋的值就是第三个参数了,我们这个例子想保留原值,所以直接把该图层放进去即可。


            注意:在执行时一定首先在环境变量中设置处理范围,其范围选择较大的那个图层,这样会自动生成一个以输入栅格图像的外接长方形为范围的栅格图像,非空的地方为栅格值,   NoData的地方为0。

(3)如果需要赋值为0的NoData区域大于这个外接长方形,可在Single OutputMap Algebra对话框

     Environment->Generalsetting->Extent中设置你所需要的mask。
(4)然后就可以直接用spatial analysis->raster calculate进行计算了。

补充:con函数可以把特定的栅格值设置为某一个值。

     setnull函数可将特定的栅格值赋值为空值。

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

 

mask=IsNull("SmallRegion.tif")   设置非空区域为0,空值区域为1。
SetNull("mask"==0,1)        设置掩膜层中值为0的为nodata,而其余 的为1
SetNull("mask"==0,"mask")   设置mask图层中值为0的为nodata,而其余区域为原始数据。

你可能感兴趣的:(ArcGIS,C#)