> 文章列表 > 基于6S模型的国产卫星数据大气校正

基于6S模型的国产卫星数据大气校正

基于6S模型的国产卫星数据大气校正

本文只讲干货,不讲客套话,不讲没有由头的技术细节。目的只为将6S模型用于国产卫星大气校正。

       首先来讲为什么要进行大气校正,讲讲必要性。首先,只有定量化需求才会用到大气校正,当然为了满足项目要求,或者满足老板、甲方要求,强制做大气校正也没啥不可。我还见过对GF系列全色波段进行大气校正呢,技术可行,合理不合理另说。      

       接下来讲讲为什么要用6S模型,而不是Flaash,或者modtran,因为前者常见于ENVI软件自带,集成有一定约束性。Modtran3以前笔者的印象是精度稍低(也可能我不会用),毕竟看名字嘛modtran(MODerate resolution atmospheric TRANsmission)更适用于中尺度Modtran4+后来没再用。6S模型使用比较熟练了,所以后续的开发和集成都是基于6S了,甚至笔者用C++重写了一遍6S模型,可以定制各种相机传感器。

6S模型都需要输入哪些参数?具体6S介绍就不提了,可以自行搜索一下。笔者使用的版本是6Sv4.1版本。根据6Sv4.1版本,将fortran语言进行C++重构,后来一直沿用此版本。基于fortran语言编写6S,大家常用的方法是,直接运行命令行程序,将输入参数构造成6S所需的输入文件。然后6S模型作为一个黑盒子,根据给定的参数,计算出结果并写入到输出文本文件。

6S输入参数举例
行数 内容 释意

1

0

几何参数(igeom)为用户自定义输入

2

88 180 40 0 3 18

太阳天顶角(度) 太阳方位角(度) 卫星天顶角(度)

卫星方位角(度) 月(1-12 日(1-31

3

2

大气模式:2中纬度夏大气

4

1

气溶胶类型参数:1大陆型气溶胶

5

0

气溶胶含量参数v=0:输入550纳米气溶胶光学厚度

6

1.950000

550纳米气溶胶光学厚度

7

0.000000

目标高度参数

8

-1000

传感器高度参数xpp= -1000:卫星观测

9

1

光谱参数,自定义输入波段范围和光谱响应率

10

0.630000 0.690000

波段范围

11

0.232000 0.323000 0.413000 0.506000 0.589000 0.682000 0.766000 0.851000 0.936000 0.953000 0.969000 0.985000 1.000000 0.988000 90976.000000 0.965000 0.954000 0.926000 0.898000 0.871000 0.843000 0.757000 0.671000 0.584000 0.497000

光谱响应率,可以理解为在波段范围内间隔步长(2.5um)x内的y值

12

0

地表反射率类型, inhomo=0:均匀表面

13

0

idirec=0不考虑方向效应

14

1

igroun  = 1; 绿色植被

15

-2

rapp    = -2;           % 无大气校正,正向运算

 

将上述参数保存成TXT作为输入传递给6S模型,然后计算出结果保存成TXT文件,我们需要从结果TXT文件中获取xa,xb,xc三个系数。上述思路的前提是将6s模型算法编译成命令行程序,换成动态库形式原理也类似。

注意,如果都能获取到上述表格中的参数,那么不论是国产卫星还是火星产卫星,都是支持的。但是国产卫星通常有个风格就是参数不便获取,或者即使能获取,位置也比较隐晦,需要有经验和关系才能获取到。获取到参数只是第一步,第二部如何将参数信息(比如传感器定标系数,波谱响应函数等)转化成6S的输入规范也是一个比较麻烦的工作,虽然技术上没有啥难度,但是用户的精力不在此,时间用在刀刃上,这种造轮子技术细节应该有人来做,所以我索性把卫星类型做成了6S模型的一个参数项,用户只要指定了卫星传感器类型,相应的定标系数和光谱响应函数就都准备好了。此外,设定了参数,6S模型也能知道该类型数据该如何从哪里(通常是图像数据的辅助XML文件)获取观测几何等其他元数据信息,极大简化了大气模型调用技术复杂度,节省了用户宝贵科研时间(摸鱼时间)。

未完待续

Diving skill