6S大气校正模型源码

6S大气校正模型源码

转载:http://blog.sina.com.cn/s/blog_678716330102v8g8.html

6S的源码是用FORTRAN来写的,想要对6S有所了解,还是要有一定的FORTRAN基础。由于作者是法国人,有很多变量缩写也是以法文为缩写的,不要望文生义。

第一节 6S简介

所谓6S是SECOND SIMULATION OF THE SATELLITE SIGNAL IN THE SOLAR SPECTRUM的简写,直译的意思就是太阳光谱的卫星信号二次模拟”。其前身为法国里尔科技大学大气光学实验室开发的5S(SIMULATION OF THE SATELLITE SIGNAL IN THESOLAR SPECTRUM)大气辐射传输模型。在遥感观测的太阳-目标-传感器这种模式中,无论是使用卫星或是飞机,获取数据的过程中都不可避免的受到大气的影响。6S就是为了模拟这种地气系统中的太阳辐射,计算卫星入瞳处的辐射能量。通过这种模拟,我们就可以知道大气对太阳辐射的影响大小,由此来进行大气校正。

(注:我的理解,6S是遥感用于对地气系统进行模拟的正演用的软件,而不是用于“大气校正”的软件,只不过正演结果往往被用于大气校正。)

6S假定晴空无云的条件下,并考虑了水汽、CO2、O3和O2等的吸收、分子和气溶胶的散射以及非均一地面和双向反射率的问题。相比与5S,6S可以模拟机载观测、设置目标高程、解释BRDF作用和临近效应,增加了新的吸收气体的计算(CO、N2O、CH4),对于瑞利和气溶胶散射的计算由于使用了逐级散射(successive order of scattering)方法,精度有了显著提升,并且光谱积分的步长从5nm改进到2.5nm。6S所能处理的光谱区间为0.25微米至4微米,低于0.25或高于4的都无法运算。缺点是对球形大气和limb (临边)观测不能处理。

目前国内大部分使用的都是1997年发布的标量版本,版本号一般为6SV4,在2005年Vermote等人又发布了一个矢量版本,版本号一般为6sV-1.0。相对于标量版本,矢量又做了很多改进,最明显的就是可以对于偏振进行处理。在本文中,主要介绍标量版本的使用,如果有时间,后续会再介绍矢量版本。

最后在后面说下,很多人都以为6S是一个软件,直接将图像输入,设置一些参数之后就可以获得大气校正过的影像了。其实这是一个完全错误的想法,原始的6S只是一个是使用Fortran写出来的一堆代码而已,而且也不能读取影像。可能大家使用的时候都是使用别人生成的EXE程序,在DOS界面里对各种参数进行输入。之前本人使用MFC写了一个6S的输入图形界面,可以点我下载。

第二节 6S使用

6S需要9个输入参数,对于这些参数都是必须仔细了解的,使用起来才能保证不会出错。学习都是一个由浅及深的过程,要努力做到知其然更知其所以然,通过对6S的学习能做到对辐射传输的公式以及推导有一个完善的了解,那么才是真正掌握了6S的使用。对于各参数下面将会一一介绍。

第一步需要输入的为几何参数igeom,其中有8情况,当选择igeom=0时,需要手动输入太阳高度角、方位角,卫星高度角、方位角以及影像获取月份与日期。剩下的7种为内置的一些卫星参数,如AVHRR、TM、GOES等,大部分都是需要输入日期,行列号等。

第二步为大气模式idatm的选择,6S里内置了0-6共其中大气模式,依次为无大气吸收,热带,中纬度夏季,中纬度冬季,亚寒带夏季,亚寒带冬季以及美国标准62大气模式,或者选择自定义大气廓线,选择7的话,需要输入海拔,压强,温度,水汽浓度,臭氧浓度。选择8需要输入水汽与臭氧浓度,大气廓线使用美国62。

第三步为选择气溶胶模式iaer,内置了7中标准气溶胶模式,为0-无气溶胶模式,1-大陆型,2-海洋型,3-城市型,5-沙漠背景的shettle模型,6-生物燃烧模型,7-平流层模型。或者自定义自己的气溶胶模式,当iaer=4时,需要输入各组分的百分比:粉状尘,水溶性物质,海洋性物质,煤烟。8为最多四种模型联合运算的一个正态分布模型。9为改进型的一种伽马分布模型。10为Junge谱幂分布模型。11为选择太阳光度计的测量值进行计算,12为读取已经设定好的参数进行计算。一般情况下如果不想做气溶胶的模式研究,就直接用刚开始介绍的7个标准模式。

第四步为气溶胶浓度,关于这个由两种输入方式,气溶胶光学厚度taer55或者可见度v。可见度v的单位为千米,如选择光学厚度taer55,可见度v的值就为0,taer55为550纳米处的气溶胶光学厚度。在气溶胶模式iaer中如果选择无气溶胶,可见度v的值就要为-1。其中气溶胶光学厚度与可见度有一个公式可以转换,6S大气校正模型源码【转载】,为了快速计算,也可以使用4.8除光学厚度得到可见度,但这只是一个约值。

第五步为目标海拔高度xps的计算,如果xps>=0,那么表示目标在水平面上。xps<0表明你知道地面的高程,所以输入具体的值,不过前面加个负号。

第六步为传感器Xpp高度的输入,xpp=-1000 表明传感器为星载传感器,xpp=0     表明传感器在地面上。-100

第七步为光谱条件iwave的输入,其中6S内置了很多传感器的光谱条件,如MODIS,TM,AVHRR,SPOT,NOAA等。也可以使用自定义的光谱条件。其中光谱响应函数的计算是以2.5微米为间隔。

iinf=(wlinf-.25)/0.0025+1.5 为起始光谱值

isup=(wlsup-.25)/0.0025+1.5 为结束光谱值

由于6S所支持的光谱区间为0.25-4,代入上式iinf=(0.25-.25)/0.0025+1.5 =1.5=1,isup=(4-.25)/0.0025+1.5=1501.5=1501。所以6S所能处理的所有光谱曲线就位1-1501条。以TM数据蓝光波段为例,其光谱范围为0.430-0.560,代入上式可以得到iinf=(0.430-.25)/0.0025+1.5=73,isup=(0.56-.25)/0.0025+1.5=125,在TM的光谱响应曲线的就可以看做前72个数值为0,后1376个也为0值。如下图所示【无】。

在6S之中,计算各种参数的时候,尤其是在计算光谱响应的起始与结束值时,定义的为整型,但计算结果可能会为一个小数,这就要考虑截断了,FORTRAN中并没有使用四舍五入的情况,而是直接取整。

对于6S没有内置的一些光谱响应也就可以自己按照这个规则来写一个Fortran文件。

第八步为地表特性的选择,这是一个比较复杂的选项,可以选择地面作为朗伯体或者各向异性来构建BRDF。下图为6S中给出的选择路径。

inhomo选择0代表地表是考虑地面为朗伯体,选择1代表地表各向异性。如果inhomo=0进入第二步的选择,再次选择0表明没有方向效应的影响,然后输入roe(表面反射比)。选择1表明有方向效应的影响,然后选择内置的一些BRDF模型来进行计算。如果inhomo=1,那么接着输入igrou1(roc)(目标的反射)、igrou2(roe)(周围环境反射)、radius r(表面半径)。

最后一步为选择rapp大气校正模型,如果rapp<-1那么就不进行大气改正,这就为遥感之中的正演,即为通过地表反射率来求得表观反射率。如果rapp>0 程序将重新赋值表观反射率,使用输入的这个辐射亮度值进行表观反射率的转换。当-1

上面的介绍,其实还是很抽象的,想要了解6S,就必须自己动手去做。


猜你喜欢

转载自blog.csdn.net/BeerBread134/article/details/79992950