下面开始添加国产卫星光谱响应的支持:

以下主要参考文章“6S大气传输模型修改源码添加、自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/article/details/50390556

我是在Windows7 64位系统下做的。6sv2.1版本,还是有很多注意问题的。

添加GF-1与GF-2传感器光谱响应支持,从中国资源卫星网站上下载。

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

1. 修改main.f

解压压缩包之后,找到main.f打开。 可以发现首先出现与传感器有关的代码是在第363行的nsat变量:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

nsat保存了传感器波段名称字符串,会显示在输出结果的传感器名称上。所以我们要在nsat的末尾加上我们自己的传感器:

GF1 PMS1

GF1 PMS2

GF1 WFV1

GF1 WFV2

GF1 WFV3

GF1 WFV4

GF2 PMS1

GF2 PMS2

SPOT5 HRG

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

我加了8个字符串。注意保持字符串长度和之前的字符串长度一致(包含空格17个字符),看到代码292行:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

这里是nsat的定义,nsat(200)*17改为nsat(209)*17。

接下来,看到代码大约1319行,关于spectral conditions的说明,可以添加传感器的说明,添加编号(200-240),

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

这个编号是索引依据,大约1407行左右:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

这个注释说明了不同传感器输入对应应该goto哪一个语句,把自己的传感器加进去。如果输入是200-225,则goto 165编号的GF1行。如果输入是226-235,则goto 166编号GF2的行。如果输入是236-240,则goto 167编号SPOT5的行。注意检查一下goto的编号是否已经存在了。 
这只是修改了注释,接下来修改代码。就在注释下方编号18的goto,观察一下就是与注释相对应的,我们把自己的传感器加在下方:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

然后就是写编号为165、166、167的代码行了,在编号164的下方,稍微修改一下函数名就好,注意括号里的(iwave-199),而不是(iwave-200),这是保证输入参数波段号从1开始。

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

对mian.f的修改完成!

GF1波段26个,编号200-225

GF2波段10个,编号226-235

SPOT5波段5个,编号236-240

2. 制作传感器文件(SPOT5.f

下面制作传感器光谱响应文件。新建一个文件,取名为SPOT5.f,注意文件名和上一步call的函数名一致。 内容拿MODIS.f全部复制粘贴过来。

由于SPOT5有5个波段,所以定义sr需要5行,下面定义每一个波段上的光谱响应了。用excel很简单就能把光谱响应函数的光谱间隔差值到了2.5nm。

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

一行一行解释,首先注释行说明了起始波长和终止波长,下面是具体每一个波长上光谱响应值。注意每一行是1501列的,这个不能修改。因为6s中光谱范围是0.25-4um,间隔为0.0025um,所以有(4-0.25)/0.0025+1=1501个波长。7行的数据中第一项92*0说明这一行数据前92个数为0;最后一项1343 * 0说明最后1343个数为0。中间有66个光谱响应值,一共是92+1343+66=1501个波段。具体计算方法是:假定光谱响应的范围是(a,b),则前面的0计算方法是(a-250)/2.5,中间非零的计算方法是(b-a)/2.5+1;后面的0是(4000-b)/2.5。

按照上面的方法继续完成剩余的3个波段,最后需要修改各个波段的上下限:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

3. 修改makefile

最后要修改一下makefile,很简单,打开makefile,在那一长串的字符最后加上我们的 GF1.o、GF2.o、SPOT5.o就OK了:

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

编译 即可

如果编译成功的话,就可以运行6s程序了,

output中可以看到我们自己加入的传感器波段名  以及大气校正的结果。

Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持-LMLPHP

添加光谱响应还是很有比较的,比如实验结果表明,GF2的两个PMS传感器波段2的差异还是很小的,但与TM的对应波段还是有差距的,大气校正过程不建议近似替代。

04-27 03:43