统计值与空值

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

统计值主要就是用于栅格数据的显示和重分类,顾名思义就是一个波段中所有像元值的一个统计信息,最大值,最小值,中值,标准差等等。这个信息我们可以通过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的栅格来记录这个裁剪的结果。

栅格那点儿事(四D)的更多相关文章

  1. 栅格那点儿事(四E)

    栅格金字塔   如果上面的部分都已经看过了,那么如何在ArcMap中更好的渲染一个栅格数据你已经知道了.可仅展示好一个栅格数据是不够的,我们还需要知道如何快速的展示一个栅格数据. 讲金字塔之前,先解释 ...

  2. 栅格那点儿事(四C)

    栅格渲染之拉伸(Stretch) 现在我们知道如何在ArcGIS中渲染栅格数据了,但是还有一个常常会碰到的问题,尤其是在使用老版本的ArcGIS的时候,为啥我加了一个栅格数据进来,啥也看不见,是黑色的 ...

  3. 栅格那点儿事(四B)---多波段栅格数据的显示

    多波段栅格数据的显示 我上面说了这么多,可能有的人会觉得平时也根本用不上.自然,说起影像数据,大家接触到对多的就是最最常见的航片或卫片.对于这种栅格数据呢,大多数的场景下,都只需实现一个效果,就是最接 ...

  4. 栅格那点儿事(四A)---栅格的显示与渲染

    栅格的显示与渲染 通过前两章的学习,应该对栅格这个东西不那么陌生了.在这一个部分,我们来看看如何展示出栅格数据最美丽的地方,在ArcGIS中栅格的显示与渲染.在进入细节之前,先来看看在ArcGIS中都 ...

  5. 栅格那点儿事(二)---细看Raster属性

    细看Raster属性 如果你已经看完了上一章,你已经了解了栅格数据是由一个个像元(Cell)按照行列方式构成的,每一个像元都有自己的像元值,并且这些像元值根据栅格类型的不同,可以代表反射值,或高程值, ...

  6. 栅格那点儿事(一)---Raster是个啥子东西

    Raster是个啥子东西 现如今,不仅是在遥感应用中能看到花花绿绿的影像了,在GIS应用中也能随处看到她们的身影.在各种在线地图中,卫星影像作为底图与矢量的道路层叠加:高程DEM作为高程来源实现地形的 ...

  7. Bootstrap 栅格系统

    1.简介 Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义classe,还有强大的m ...

  8. Bootstrap 栅格系统(转载)

    源地址:http://www.cnblogs.com/linjiqin/p/3559800.html Bootstrap 栅格系统 目录1.简介2.栅格选项3.列偏移4.嵌套列5.列排序 1.简介Bo ...

  9. Bootstrap教程:[4]栅格系统详解

    http://jingyan.baidu.com/article/6f2f55a1852aa1b5b83e6c5a.html 们都知道bootstrap3.0使用了四种栅格选项来形成栅格系统,这四种选 ...

随机推荐

  1. P1527 [国家集训队]矩阵乘法

    \(\color{#0066ff}{ 题目描述 }\) 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. \(\color{#0066ff}{输入格式}\) 第一行两个数N,Q ...

  2. 5分钟构建无服务图片鉴黄web应用(基于FunctionGraph)

    函数工作流(FunctionGraph,FGS)是一项基于事件驱动的函数托管计算服务,托管函数具备以毫秒级弹性伸缩.免运维.高可靠的方式运行.即使在一些复杂的web应用场景中,函数工作流也能发挥出令人 ...

  3. Qt 学习之路 2(3):Hello, world!

     豆子  2012年8月22日  Qt 学习之路 2  107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...

  4. Django 想要单独执行文件

    Django  单独文件执行  文件  我是在项目根目录文件创建的. 配置文件: #!/usr/bin/env python import os import sys if __name__ == & ...

  5. codeforces-777E Hanoi Factory (栈+贪心)

    题目传送门 题目大意: 现在一共有N个零件,如果存在:bi>=bj&&bj>ai的两个零件i,j,那么此时我们就可以将零件j放在零件i上.我们现在要组成一个大零件,使得高度 ...

  6. day21 pickle json shelve configpaser 模块

    1. 序列化:我们在网络传输的时候,需要我们对对象进行处理,把对象处理成方便存储和传输的格式,这个过程就叫序列化 序列化的方法不一定一样,三十目的都是为了方便储存和传输. 在python中有三种序列化 ...

  7. python+splinter实现12306网站刷票并自动购票流程

    python+splinter实现12306网站刷票并自动购票流程 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站 ...

  8. Java字符容量capacity()方法

    Java字符容量计算:比如StringBuffer sb=new StringBuffer("Good");输出 .

  9. django建表报错

     今天在用pycharm创建数据库的表的时候碰见了一个报错,这还是头一次碰见这种奇怪的错误.这里记住希望能避免错误. 我所创建的表是用的django原有的用户表,做了一下继承. class UserI ...

  10. 3DMAx Panda Directx Exporter 导出 X插件

    Panda Directx Exporter 下载地址 http://www.andytather.co.uk/Panda/directxmax_downloads.aspx 将下载的文件解压后,放到 ...