Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持
下面开始添加国产卫星光谱响应的支持:
以下主要参考文章“6S大气传输模型修改源码添加、自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/article/details/50390556
我是在Windows7 64位系统下做的。6sv2.1版本,还是有很多注意问题的。
添加GF-1与GF-2传感器光谱响应支持,从中国资源卫星网站上下载。

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

nsat保存了传感器波段名称字符串,会显示在输出结果的传感器名称上。所以我们要在nsat的末尾加上我们自己的传感器:
GF1 PMS1
GF1 PMS2
GF1 WFV1
GF1 WFV2
GF1 WFV3
GF1 WFV4
GF2 PMS1
GF2 PMS2
SPOT5 HRG

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

这里是nsat的定义,nsat(200)*17改为nsat(209)*17。
接下来,看到代码大约1319行,关于spectral conditions的说明,可以添加传感器的说明,添加编号(200-240),

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

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

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

对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。

一行一行解释,首先注释行说明了起始波长和终止波长,下面是具体每一个波长上光谱响应值。注意每一行是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个波段,最后需要修改各个波段的上下限:

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

编译 即可
如果编译成功的话,就可以运行6s程序了,
output中可以看到我们自己加入的传感器波段名 以及大气校正的结果。

添加光谱响应还是很有比较的,比如实验结果表明,GF2的两个PMS传感器波段2的差异还是很小的,但与TM的对应波段还是有差距的,大气校正过程不建议近似替代。
Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持的更多相关文章
- 64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 )
64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 ) [PS: 如果在64位系统下,出现调用测试demo,返回false的情况下,请修改Hook Dll的代码] glhH ...
- Windows7 64位环境下Python-igraph环境配置
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实配置很简单,但是网上的几个都不咋靠谱.而且我本身对这个软件挺感兴趣.igraph是一个网络 ...
- 64位centos 下编译 hadoop 2.6.0 源码
64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...
- ubuntu14.04 64位系统下编译3.13.11内核源码
该过程一共分为四步: 1.下载内核:我下载的是3.13.11这个版本的内核! 2.解压内核:我将其解压/home/jello/Downloads/linux-3.13.11目录下!下文将会基于此目录编 ...
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- 装numpy 环境:python3.4+ windows7 +64位系统
机器学习实战python 因为图像处理的原因,初步学习机器学习,选用语言python,参考书籍<机器学习实战> 环境:python3.4+ windows7 +64位系统 首先,今天解决的 ...
- Windows7 64位安装配置Apache2.4+PHP5.4+MySQL5.5+Xdebug
PHP更新已经到了5.4.7了,之前是用PHPstudy安装的PHP5.2.13版本,今天有空,就把之前的集成安装卸载了.换上了新一代PHP,记录一下.. 环境:Windows7 64位(内部版本76 ...
- Windows7 64位机上Emgu CV2.4.2安装与配置
Windows7 64位机上Emgu CV2.4.2安装与配置 分类: Emgu CV 2012-11-28 17:22 92 ...
- PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验
PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验 一.问题现象及解决方法 现象: 1.PL/SQL 无法登录64位数据库 2.在PL/SQL ...
随机推荐
- OSGi解决的问题
osgi最明显的缺陷 bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务 ...
- Go语言反射reflect
目录 通过反射获取类型信息 理解反射的类型(Type)与种类(Kind) reflect.Elem() - 通过反射获取指针指向的元素类型 通过反射获取结构体的成员类型 通过反射获取值信息 使用反射值 ...
- [Swift]LeetCode50. Pow(x, n) | Pow(x, n)
Implement pow(x, n), which calculates x raised to the power n (xn). Example 1: Input: 2.00000, 10 Ou ...
- ThinkPHP 数据库操作(二) : 增删改查
基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_ ...
- Typescript 查缺补漏
Types Casting: let input = xxx as HTMLInputElement; let input = <HTMLElement>xxxx; Object Shap ...
- SpringCloud(2)---SpringCloud入门篇
SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一 ...
- 『sumdiv 数学推导 分治』
sumdiv(POJ 1845) Description 给定两个自然数A和B,S为A^B的所有正整数约数和,编程输出S mod 9901的结果. Input Format 只有一行,两个用空格隔开的 ...
- JAVA实现在线查看PDF和office文档
一个项目中要做一个在线预览附件(和百度文库差不多)的小功能点,楼主在开发过程中踩了很多坑的同时也总结了一些方法,仅供广大猿友参考,那么要实现这个小功能,目前主要是有如下3种可行的实现方式,下面先说实现 ...
- java~@Async异步功能
@Async注解,可以实现异步处理的功能,它可以有返回值,或者直接在新线程时并行执行一个任务,对于异步来说,它的执行是有条件的,你需要把异步代码块放在单独的类里,当spring在注入时,才不会相互影响 ...
- 补习系列(3)-springboot中的几种scope
目标 了解HTTP 请求/响应头及常见的属性: 了解如何使用SpringBoot处理头信息 : 了解如何使用SpringBoot处理Cookie : 学会如何对 Session 进行读写: 了解如何在 ...