一.前言
去年导师让我们负责卫星数据的一系列处理代码开发,笔者分配到的卫星有FY3C、FY3D、VIIRS。在完成任务过程中,笔者发现网上1b数据预处理的资料非常少,检索到有用资料需要花费较大精力,故在此对相关资料进行整合。
二.预处理介绍
卫星1b数据为什么要进行预处理?以传感器存储反射波段数据为例,我们通常需要卫星能够获取单元的反射率f,而传感器测得的电信号经过放大等一些处理得到1b中的DN值数据,DN值并不等同于反射率f,但二者有映射关系,所以需要通过一系列线性和非线性计算,将DN值转换为反射率f,该过程被称为卫星数据预处理。(这里暂时不介绍热红外波段的辐射定标)
不同卫星的预处理方式不同,接下来将介绍这些卫星的处理方法。
三.FY3C数据预处理
3.1 辐射定标公式
FY3C的辐射定标比较简单,进行一次线性校正即可。k和b是定标系数,自从发射上空后,系数已进行了几次矫正,具体的数值L1B数据会直接提供。不过矫正前后系数的改变不大,可以让数据提供的系数和官网的系数进行比较,判断数据提供的系数的合理性。
这里提一下FY3C和FY3D国产卫星,其一些重要信息可以从风云卫星遥感数据服务网进行查询。
下面是FY3C和FY3D在定标过程经常会出现的问题,一位博主也提到过FY3D定标问题,问题是定标后反射率仍然大于1,而正常值应该是【0,1】,所以最后定标结果除以100才是最后的反射率值。验证是不是除以100可以用上述这位博主的方法,在这里我也提供一种解决思路,ENVI软件也可以处理国产卫星,其可以直接导入1b数据进行辐射定标,可以让我们的定标结果和其定标结果进行对比,经过测试,大小差别在100倍。
3.2 定标示例
FY3C卫星数据的格式如下,后缀GEOXX文件中存储着经纬度、天顶角等数据,L1B后缀文件存储着DN值和一系列元数据等数据,数据预处理需要用到L1B文件。
使用 HDF Explorer打开L1B数据可以清晰的看出文件内部的数据组成,EV_RefSB为我们需要的DN值数据,蓝色文件中存有辐射定标的信息。
打开RefSB_Cal_Coefficients可以看到有14行数据,对应的是7个波段的定标系数。
四.FY3D数据预处理
4.1 辐射定标公式
与FY3C不同的是,FY3D官网有专门的定标PDF文件,记录了反射波段和热发射波段的定标方法,这对我们的定标工作有很大的帮助:
按照官网文件的描述,上图计算的Ref只是可见光定标反射率,需要转化为我们实际需要的表观反射率,转化公式如下图:
上图中我们需要关注的是第三个公式,Des是日地距离比,该值的大小约等于1,对结果影响不大,而u的含义官网并未提及具体含义,但是根据表观反射率的推导公式,可知u的含义应该是COS(太阳天顶角)。
与FY3C相同,ρ与真实TOA表观反射率相差100倍关系,最后需要除以100。
4.2 定标示例
FY3D的影像数据和经纬度数据也是分开的,以250m分辨率数据为例:
EV_250_RefSB_b1是影像数据,VIS_Cal_Coeff记录的是定标信息,三列分别是Cal_0、Cal_1和Cal_2
五.VIIRS数据预处理
VIIRS的数据组织比较独特,不仅经纬度等数据和波段数据是分开存储的,波段数据也不像FY3C和FY3D那样是组合存储的,而是一个波段一个文件,M波段和I波段的区别是分辨率不同,分别是750m和375m,M波段包含11个太阳反射波段和5个热反射波段,I波段包括3个太阳反射波段和2个热反射波段。
VIIRS的定标比较简单,定标系数和波段数据放在了一起:
定标公式为:
最近想通了,需要除以100的原因可能是反射率的单位是%,百分比的记录方式最后肯定要除以100.