6SV1.1或6SV2.1编译

6S模型简介

1986年,法国Université des Sciences et Technologies de Lille(里尔科技大学)大气光学实验室Tanré等人为了简化大气辐射传输方程,开发了太阳光谱波段卫星信号模拟程序5S(SIMULATION OF THE SATELLITE SIGNAL IN THE SOLAR SPECTRUM),用来模拟地气系统中太阳辐射的传输过程并计算卫星入瞳处辐射亮度。1997年,Eric Vemote对5S进行了改进,发展到6S(SECOND SIMULATION OF THE SATELLITE SIGNAL IN THE SOLAR SPECTRUM),6S吸收了最新的散射计算方法,使太阳光谱波段的散射计算精度比5S有所提高。

这种模式是在假定无云大气的情况下,考虑了水汽、CO2、O3和O2的吸收、分子和气溶胶的散射以及非均一地面和双向反射率的问题。6S是对5S的改进,光谱积分的步长从5nm改进到2.5nm,同5S相比,它可以模拟机载观测、设置目标高程、解释BRDF作用和临近效应,增加了两种吸收气体的计算(CO、N2O)。采用SOS(successive order of scattering) 方法计算散射作用以提高精度。缺点是不能处理球形大气和limb(临边)观测。

6S 辐射传输模式(Second Simulation of a Satellite Signal in the Solar Spectrum)可用于多种辐射传输的计算。由于这些模式都是由Fortran语言编程而来,所以使用之前都需要根据源代码自行编译为可执行程序。对于Unix以及Linux系统编译相对简单,对于Windows系统略微复杂一些,需要构建Linux环境后进行编译。

6S模型下载

6SV2.1可在官网下载https://salsa.umd.edu/6spage.html
6SV1.1可以在https://py6s.readthedocs.io/en/latest/index.html下载。
注意:如果后期需要运用到Py6S(一个6S的Python调用库)进行编程,需要选择6SV1.1版本,因为2.1版本Py6S不支持。

编译

Py6s网站https://py6s.readthedocs.io/en/latest/installation.html介绍了多种平台的安装方式,其中Windows平台的安装采用的是GNUWin32搭建Linux环境。由于本人电脑已经使用了Cygwin64 Terminal构建了Linux环境,且比较顺手,因此本博文不同于网络上基于GNUWin32编译6S,而是采用Cygwin64 Terminal构建了Linux环境对6S进行编译。

关于Cygwin64 Terminal的安装,以及相应编译环境(Fortran)的安装,在以前的几篇博文中都有详细介绍。可以参考博文Cygwin及Wget安装 以及 Windows环境安装SBDART模式及测试中涉及的Cygwin64 Terminal以及组件的安装。构建好Linux环境后,接下来着手进行编译6S。

将下载的6S压缩包解压至自己的目录,如:
在这里插入图片描述

用文本文件打开6SV1.1文件夹中的Makefile文件,做如下两处修改:
修改1:将第8行的FC = g77 $(FFLAGS)修改为FC = gfortran -std=legacy -ffixed-line-length-none -ffpe-summary=none $(FFLAGS),因为默认采用的Fortran编译器是g77,本文安装的是gfortran编译器,因此需要进行修改为如下。
在这里插入图片描述

修改2:将35行的 -lm删去,并将sixsV1.1.exe添加exe,否则编译出来的可执行程序没有exe结尾,无法运行。
在这里插入图片描述

开始编译
步骤1:打开Cygwin64 Terminal,设置路径。$ cd /cygdrive/d/6SV1.1/6SV1.1 输入后回车。这里的路径是Makefile的路径,也就是解压后的6SV1.1文件的路径。
步骤2:$ make 回车,编译结束。
在这里插入图片描述
编译结束后,可以在D:\6SV1.1\6SV1.1路径中找到编译后的6SV1.1.exe程序。
在这里插入图片描述

测试

输入命令:./sixsV1.1.exe < ..\\Examples\\Example_In_1.txt回车,这里的Example_In_1.txt文件是自带的测试输入文件。这里的代码和Py6S中的略微不同。
也可以直接把sixsV1.1.exe程序拖拽到Cygwin64 Terminal,然后加上符号<再把输入文件拖拽进去。
在这里插入图片描述

在这里插入图片描述

6SV2.1编译

编译方法一模一样,就不进行赘述了,直接把修改好的Makefile文件提供如下
在这里插入图片描述

在这里插入图片描述

Py6S安装

本来不想安装的,平时用Python比较少。鉴于Py6S安装很简单,这里也简要记录一下安装过程。安装很简单,命令窗口输入:pip install Py6S命令就可以安装了。安装后,将编译的6SV1.1.exe所在路径添加至系统路径即可。提示:这个可执行程序编译后可以拷贝至其它路径,不影响。
下面截图本人用的VSCode搭建的Python环境,如果你的是其它 IDE也没有影响。关于用VScode配置Python开发环境可以参考本人以前的博文。
在这里插入图片描述
测试1

from Py6S import *
SixS.test()

在这里插入图片描述
输出

6S wrapper script by Robin Wilson
Using 6S located at D:\6SV1.1\run\sixsV1.1.exe
Running 6S using a set of test parameters
6sV version: 1.1
The results are:
Expected result: 619.158000
Actual result: 619.158000
#### Results agree, Py6S is working correctly

测试2

# Import the Py6S module
from Py6S import *
# Python2.7不需要转编码,3.x版本需要增加这句语句,否则出现utf-8错误
encoding='unicode_escape'
# Create a SixS object
s = SixS()
# Set the wavelength to 0.675um
s.wavelength = Wavelength(0.675)
# Set the aerosol profile to Maritime
s.aero_profile = AeroProfile.PredefinedType(AeroProfile.Maritime)
# Run the model
s.run()
# Print some outputs
print(s.outputs.pixel_reflectance, s.outputs.pixel_radiance, s.outputs.direct_solar_irradiance)
# Run the model across the VNIR wavelengths, and plot the result
wavelengths, results = SixSHelpers.Wavelengths.run_vnir(s, output_name='pixel_radiance')
SixSHelpers.Wavelengths.plot_wavelengths(wavelengths, results, "Pixel radiance ($W/m^2$)")

在这里插入图片描述

from Py6S import *
s = SixS()
# Set the ground reflectance to have some sort of BRDF, or the plot will
# be really boring! In this case, we're using the Roujean model 
s.ground_reflectance = GroundReflectance.HomogeneousRoujean(0.037, 0.0, 0.133) 
# Run the model and plot the results, varying the view angle (the other
# option is to vary the solar angle) and plotting the pixel reflectance. 
SixSHelpers.Angles.run_and_plot_360(s, 'view', 'pixel_reflectance')

在这里插入图片描述

总结

编译成功。对于6S的使用,接下来可能会进行总结。对于可执行程序6SV1.1.exe、6SV2.1.exe可以通过Python以及C++或者Matlab进行调用,从而实现重复繁琐的运算过程。希望这篇博文能够帮助到入门的你。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要将6sv2.1编译成exe文件,需要按照以下步骤进行操作: 1. 确保已经正确安装6sv2.1的编译环境:这通常包括需要的编译器、库文件以及其他依赖项。检查并确保这些都正确安装。 2. 下载6sv2.1的源代码:通常可以从官方网站或其他可靠的资源中获得源代码的压缩包。下载并解压缩源代码文件。 3. 打开编译环境:在编译环境中,定位到6sv2.1的源代码所在的目录。这个目录应该包含主要的源代码文件,如.c或.cpp文件,以及其他必要的文件。 4. 执行编译命令:根据编译环境提供的命令,运行编译命令。这通常涉及使用编译器将源代码转换为机器代码,并将其链接到一个可执行文件中。 5. 等待编译完成:编译过程可能需要一些时间,具体取决于源代码的复杂性以及计算机的性能。等待编译过程完成,不要中途中断。 6. 检查编译结果:在编译过程完成后,检查是否生成了一个exe文件。如果编译成功,你应该能在源代码所在的目录中找到这个exe文件。 7. 测试exe文件:运行生成的exe文件,确保它能够正常工作。如果有任何错误或异常,可能需要检查编译环境设置或源代码本身的问题。 最终,你应该能够将6sv2.1成功编译成一个exe文件,这样你就可以在合适的环境中运行该程序了。请确保仔细遵循上述步骤,并根据个人的操作系统和编译环境进行相应的调整。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值