栅格那点儿事(四D)

3
分享 2015-12-20
统计值与空值

在上一篇的内容里反复提到了一个统计值。那这个统计值是怎么来的,具体是干嘛用的呢?

统计值主要就是用于栅格数据的显示和重分类,顾名思义就是一个波段中所有像元值的一个统计信息,最大值,最小值,中值,标准差等等。这个信息我们可以通过ArcCatalog中查看任一栅格数据的属性,或者在ArcMap中查看栅格属性的Source页中得到,不记得的可以参见下图。



仔细看一下上面这张图,我们可以得到三个信息,
是统计值是按照波段计算的。展开统计值会看到按照波段数分成了多个组(Band_1,Band_2…),每个波段的统计值记录在对应的波段信息下。
二是统计值中还记录了分类信息(Classes)。在查看土地利用分类图时,直接查看这个信息就可以知道图中一共有几类地类。
三是计算统计值也有参数可以设置,Skipped Value和IgnoredValue。Skipped Value默认值是1,也就是所有行列的象元都参与计算。这个参数在什么时候设置呢?既然这个值表示两次采样的间隔,那么在数据量非常大的时候,比如几十G或者更大的数据的时候,可以设置成100来减少参与运算的象元从而加速计算的时间。

对于一个没有统计值的栅格,在首次计算后,就会生成那个与栅格数据如影随形的.aux文件中。这个文件也用来存储色彩映射表,统计数据,直方图,金字塔文件的指针,坐标系等信息。
如果得到的一个栅格数据没有统计值的属性,也可以正常加载,只是在进行拉伸的时候,会提示您的数据没有统计值,点击是就可以自动计算了。如果数据比较大的情况下,会花费很长的时间。所以建议加载前,先使用GP工具Calculate Statistics来进行计算。如果数据中使用极小值作为空值时,也建议使用工具计算以得到更好的渲染效果。

空值
空值就是传说中的NoData了。也就是在一个栅格数据中,除了符合比特深度(Pixel Depth)的值之外,用于标记此处无数据的值----就是空值。产生空值的原因有很多种,有可能是在数据采集的时候,传感器没有记录下某个位置的反射值,或者是由于噪声。但是最常见的,则是对卫星影像做了地理配准后,影像的覆盖范围变为菱形/平行四边形所造成的边角是黑色的情况。

空值到底是个什么值?
由于不同的软件处理影像时,会使用不同的值来标记这个数据为空的值,有的会使用0值,有的会使用极小值。需要注意的是,在ArcGIS中,0值是一个有效值而不是一个空值。出于这个原因,在渲染这类影像的时候,ArcGIS会将0值渲染出来,而不是作为空值处理成透明色。

那么我们如何消除这个黑边的问题呢?
在9.3.1之后的版本中,我们可以在图层属性Symbology页下看到这样的一个设置:Display Background value…as…。通过输入0,0,0,以及将颜色设置成透明,就可以达到让黑边消失的渲染效果。



这是对单一的栅格数据的,如果使用的是Mosaic Dataset这种数据模型呢,ArcGIS中提供了一个解决Mosaic Dataset中黑边问题的工具Define Mosaic Dataset NoData。在工具中可以对每一个波段单独设置空值,完成后就可以得到理想的黑边变透明的效果。

或者呢,为了从根本上解决问题,有些筒子喜欢通过导出的方式将黑边设置为空。具体操作就是在Export Data的时候,在NoData的选项中输入0,0,0。但是,BUT,这样是完全达不到预计的效果的。到导出数据是,nodata的设置时针对某一个像元值的,不管是RGB中任何一个波段中的值,都会被设置成空值。也就是说,如果有这样一个位置上的RGB值为56,146,0,其实伦家是绿色的,但是在导出的结果影像中就变成一个洞了。使用Set Null工具也会有类似的结果。这是由于ArcGIS的栅格处理多数是处理单波段的数据,目前也还没有更新到可以同时处理多个波段的数据…所以这个办法要慎用啊…



到当前的版本(10.0)为止,从根本上解决多波段的影像数据的黑边的唯一有效的方式只有裁剪。或者呢,在运行Set Null的时候,在环境变量中设置Mask也是可以的。

说起裁剪呢,又会引出一个与NoData相关的问题了。一般裁剪栅格时,大家都会使用Clip,或者是Extract by Mask工具。可能会有人注意到,使用Clip工具,在工具的界面中会有设置Nodata值的位置,而Extract by Mask中则没有。再看得到的结果呢,对于一个8bit的栅格数据,clip的结果仍然是8bit,而extract的结果就会变成16bit。原因就是执行clip时,不管mask是什么形状,工具中只会使用到envelope的坐标,这样得到的结果就是一个标准的矩形。而使用extract工具时,为了保留mask的准确的形状,在envelope内mask外的值需要标记为NoData,而ArcGIS中使用的是一个极大值(一般是65535),导致的结果就是会使用一个16bit的栅格来记录这个裁剪的结果。

栅格那点儿事(零) :http://zhihu.esrichina.com.cn/article/22 
栅格那点儿事(一)---Raster是个啥子东西:http://zhihu.esrichina.com.cn/article/30​ 
栅格那点儿事(二)---细看Raster属性:http://zhihu.esrichina.com.cn/article/25​ 
栅格那点儿事(三)---关于压缩:http://zhihu.esrichina.com.cn/article/24​ 
栅格那点儿事(四A)---栅格的显示与渲染:http://zhihu.esrichina.com.cn/article/23​ 
栅格那点儿事(四B)---多波段栅格数据的显示:http://zhihu.esrichina.com.cn/article/27​ 
栅格那点儿事(四C):http://zhihu.esrichina.com.cn/article/26​ 
栅格那点儿事(四D):http://zhihu.esrichina.com.cn/article/28​ 
栅格那点儿事(四E):http://zhihu.esrichina.com.cn/article/29​ 

文章来源:http://blog.csdn.net/redhairp/article/details/7276599

3 个评论

我一直都在看您写的帖子啊,一口气看完了“栅格那些事”,觉得写得很好,很到位,讲的也很靠谱,像我这种非GIS出生的小白都能读懂(尽管还有些需要自己去做功课),期待作者持续更新中
另外我打算把作者的这一个专题贴到word里保存起来,以防以后下线了,哈哈哈,不断的翻阅和学习
写的真心很好 深入浅出 一直想找遥感最基础的知识学习 这个就是了 感谢楼主

要回复文章请先登录注册