当前位置: 首页 > news >正文

6SV辐射传输模型编译和加入自定义传感器参数

主要参考博客

感谢爱记录的科研伙伴们

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

6S大气传输模型修改源码添加、自定义卫星光谱响应(以HJ-1B CCD为例)_hj卫星的光谱响应函数-CSDN博客

遥感影像大气校正一:6S模型使用_6s模型大气校正-CSDN博客

https://py6s.readthedocs.io/en/latest/installation.html

6S大气传输模型修改源码添加、自定义CASI传感器光谱响应_6s模型大气校正matlab代码-CSDN博客

写在前面的话

6SV模型目前网上已有版本6SV1.1和6SV2.1。因为6SV2.1没有提供python接口,个人比较喜欢python编程,所以我使用的是6SV1.1。2.1版本的同学同样可以参考,方法是一样的。

操作步骤

下载源码

6SV2.1网址S.A.L.S.A.

6SV1.1网址https://rtwilson.com/downloads/6SV-1.1.tar

需要安装的软件参考“主要参考博客”里的最后一个网址。和我一样是windows 64位,不想自己下载可以去我主页找资源列表,我这里打包了一下,免费下载https://download.csdn.net/download/weixin_39282491/89919782

Step 1 修改main.f文件

解压6SV-1.1.tar,找到找到main.f文件,修改以下一些内容:以下涉及的所有修改,注意和原来格式保持一致,尤其是缩进和字符。


大概在410行左右,添加自定义传感器名称+对应的波段号

可以在源码中ctrl+F搜索“data nsat/”,定位到这一步骤该修改的地方如图所示,我这里模拟添加MODIS 1km的12个波段。  

在文件的280几行,修改nsat的size

可以在源码中ctrl+F搜索“nsat(”,定位到这一步骤该修改的地方源码中是166,那么新的应该是166+12=178     修改为nsat(178)*17

代码大约1100行,补充新增波段的spectral conditions说明

可以在源码中ctrl+F搜索“spectral conditions”,定位到这一步骤该修改的地方加入波段名和(wavelength-min, wavelength-max)。

在文件中找到大约1325行左右,给每个传感器的和编号对应起来。

可以在源码中ctrl+F搜索"c       159     VIIRS   band",定位到这一步骤该修改的地方。刚才加入的是spectral conditions波段编号是166-177,这一步的操作就是告诉代码,用户后面输入的166-177都属于MODIS1KM,并且给这个语句赋值了一个编号。也就是上图中的“162”。这一步要注意,赋值的编号要在整个代码中是唯一的。比如后面有一个语句是166的编号,也就意味的自己起编号的时候就不能用166了。可以ctrl+F搜索一下,再使用编号。

goto语句中,加入新的标号行

 可以在源码中ctrl+F搜索"18 goto",定位到这一步骤该修改的地方。加入新的标号行,这部分输入的含义是,告诉代码,如果用户输入是166-177,则goto 到162编号的行。因为新增了15个波段,所以加入15个162的编号。

增加调用新的光谱响应函数的指令

可以在源码中ctrl+F搜索"call viirs",定位到这一步骤该修改的地方。照猫画虎,写编号为162的代码行了,在编号159的下方,稍微修改一下函数名就好。减去的数据表示波段号。spectral conditions步骤中,165以及之前的波段是其他卫星数据的,从166才开始是你定义的,所以要减去前面的波段号。

 至此,对mian.f的修改完成!

Step 2 制作传感器文件

下面是重头戏,制作自定义传感器文件。

新建一个文件,取名为xxxx.f,注意文件名和上一步call的函数名一致。

首先可以打开一个6s自带的传感器文件,全部复制粘贴过来,看看他们的格式。

因为自己编辑比较麻烦,再加上有的时候要做好多波段的,我就索性写了代码用来将光谱响应函数插值到6s要求的2.5nm间隔,读取光谱响应函数,自动生成传感器.f文件。

Step 3编译写好的传感器文件.f

cmd命令中输入g77 –c xxxx.f编译刚写好的传感器参数文件

 Step 4 修改makefile

上一步编译的结果是一个同文件名的.o文件。所以这一步要修改一下makefile,很简单。

打开makefile,在那一长串的字符最后加上xxxx.f对应的xxxx.o。

Step 5 生成exe文件

执行make命令,生成exe

 Step 6 对编译好的exe进行测试

这一步我之前做的时候忘记截图记录了。现在补一个新的测试。

运行生成的exe程序   像我图中所示,输入6s参数

这里的287是我自定义的 VIIRS-JPSS band 14编号。

输入完,换行得到运行结果。

编译成功。记录到此为止。

有疑问的,或者编译出错的宝子们可以在评论区留言,我一般没有看私信的习惯。留言大家都可以看到,互相帮助探讨一下,辐射定标拯救全人类!


http://www.mrgr.cn/news/58012.html

相关文章:

  • 在linux中 appimage是什么文件? 为什么能直接运行
  • 免费送源码:Java+SpringBoot+MySQL SpringBoot医院人事工资管理系统 计算机毕业设计原创定制
  • MissingSemester-版本控制系统Git
  • 数字处理系列
  • 全面击破工程级复杂缓存难题
  • Linux学习笔记14---EPIT 定时器实验
  • 【模型部署】python中socket编程入门知识-系列1
  • 【Linux学习】(4)Linux权限
  • MyBatis-Plus(三):使用自定义目录下的xml时踩坑记录
  • CMake中的List关键词:详细指南
  • 数据结构与算法——Java实现 46. 从前序与中序遍历序列构造二叉树
  • 【多线程和高并发】多线程和高并发提纲
  • Gradle核心概念总结
  • 论软件著作权
  • 线性可分支持向量机代码实现
  • Python 代码的主要功能是从给定的日志文件和设备列表中提取特定设备(华为和华三)的用户账号信息
  • Java 开发——(下篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus
  • AI基础:传教士与野人
  • Python如何处理zip压缩文件(Python处理zip压缩文件接口源码)
  • SLAM:未来智能科技的核心——探索多传感器融合的无限可
  • [蓝桥杯 2024 省 C] 回文数组
  • LeetCode199. 二叉树的右视图(2024秋季每日一题 47)
  • Linux 权限的理解
  • 前端发送请求格式
  • 1024——视触觉传感器GelSight的前世今生
  • 系统移植相关概念总结