一、ALG介绍
ALG包是一个GUI工具箱,它促进了大气辐射传输模型(RTM)和后处理工具的运行。软件工具独立,与ARTMO工具箱兼容。本文记录在windows环境下的配置过程。
二、软件安装及环境配置
1、ALG软件下载
下载地址:
下载ALG软件包并安装对应版本的Matlab
2、 安装ALG
安装ALG之前,需验证安装64位MCR(Matlab Compiler Runtime)9.9,MCR为一组独立的共享库,可以在未安装Matlab的计算机上执行编译后的Matlab程序。因此,没有Matlab R2020b(64位)软件时,可安装相应的MCR,仍可使用ALG软件包。
为简便,提前安装Matlab R2020b。(若为其他版本的ALG,按照官网说明下载对应版本的Matlab!)
(1)解压ALG软件,包含以下文件。
文件夹非必要不进行编辑或移动!
- ALGTools:包含一组Matlab函数(.m),用于读取ALG生成的大气查找表(LUT)文件头、实现LUT插值及光谱卷积
- bin:软件二进制文件
- Conf:软件配置文件(.xml)
- Help:软件用户手册(html)、教程(.m)
- LUTs_folder:存储生成查找表的默认路径
- Others:使软件运行的附加文件(如,大气概况等)
- third_party_sw:安装第三方大气辐射传输模型的默认文件夹,目前包含6SV v2.1(已完成编译),且RTMs可以安装在其他目录中
- UserData:用于存储用户自定义数据的默认文件夹
(2)运行ALG软件,运行bin目录下的ALG.exe
显示主界面如下。(可先将Matlab打开再执行ALG.exe)
(3)需配置软件,使其能够运行自定义安装的大气RTM,如MODTRAN v5.2、6SV等。进入installation-guide.html界面。以6SV2.1为例,ALG包含该RTM的编译版本,在third_party_sw目录下。
A.添加大气RTM。Settings,进入首选项界面,单击RTM选项卡以更新RTM的配置:
从窗口右上角的select RTM弹出菜单中选择一个大气RTM,键入大气RTM可执行文件的路径和名称(例如,ALG_v3.2.2\third_party_sw\6sV-2.1,使用ALG工具箱中默认的6SV2.1版本)
单击“Apply”按钮,更新存储在ALG-Conf子文件夹中的RTM配置文件(RTMconf.xml)。
三、ALG第三方库6sV2.1建立查找表
1、6SV v2.1建立查找表
基于大气辐射传输模型(RTM)创建新的查找表(LUT)包括(1)定义控制大气RTM(新LUT配置)行为的输入参数和变量;(2)处理RTM输出文件并存储处理后的数据以生成LUT。
1.1 常规LUT配置
新LUT配置面板旨在通过定义输入LUT参数和变量来运行辐射传输模型的模拟。这些变量包括:(1)通用LUT配置参数,(2)RTM关键输入变量,(3)用户定义的OPAC气溶胶变量,(4)传感器光谱配置,以及(5)高级RTM参数。所有这些变量和参数都控制着大气RTM的行为。
ALG界面→File→New→Run simulations,打开面板
以下步骤和GUI用于配置新的大气LUT,与所选的大气RTM无关。
①默认情况下,ALG将LUT路径设置为LUTs_folder文件夹
②指定用于运行RTM的并行CPU核的数量。此数量会自动受到安装ALG的PC的最大CPU内核的限制。通过选择N个并行运行的值,ALG将自动将所有RTM模拟分布在N个不同的子文件夹中,路径及名称在保存LUT文件文本框中引入,后缀为_i(i从1到N)。
③选择用户级别(Basic、Medium或Advanced)。该参数允许用户访问更高级的LUT配置参数和选项,例如关键输入变量和LUT采样策略。
④可用的大气RTM。
大气模型
A. Operation mode - Transfer Functions option:允许为所选择的RTM生成大气传输函数。这些函数包括大气RTM的典型标准输出,如路径辐射、透射率或表面辐照度。将传输函数模式用于正向模拟或大气校正等应用程序。
B. Operation mode - At-sensor Radiance option:正向模式运行所选RTM,计算到达传感器的辐射。在该模式中,除了大气、几何和光谱配置外,用户还将定义表面特性(例如反射率、荧光、温度、发射率)和云特性。
C. Operation mode - Transmittance option:在透射率模式下运行选定的RTM,并存储可用气体的地表-传感器的直接透射率。
用户必须在其弹出菜单上选择采样策略⑤。
采样策略
A. Manual (gridded) sampling:关键输入变量的值被全部与全部组合,从而给出一个n维矩形网格(n=输入变量空间的维度)。此选项适用于所有用户,是多个应用程序中LUT生成的最常见选项(例如大气校正)
B. Automatic (gradient):LUT节点会自动分布,以便将线性插值中的误差限制在用户输入值以下。注意,该方法仅适用于包含连续变量的LUT,因此不接受离散变量的各种值。此选项可用于所有用户。
C. Latin Hypercube:输入变量在输入变量空间中伪随机且均匀地分布,从而产生一组分散的LUT节点。此选项适用于Medium和Advanced用户,建议用于开发回归模型(模拟器)或模拟一组随机模拟,以验证LUT插值。
D. Sobol/Halton sequence:输入变量在输入变量空间中伪随机且均匀地分布,从而产生一组分散的LUT节点。此选项适用于Advanced用户。
E. Read distribution:用户将从以前的LUT(在.h5文件中)或存储在.txt文件中选择预先计算的节点分布。在.txt文件的情况下,该文件应包含一个由N个输入变量(以行为单位)和M个组合(以列为单位)组成的矩阵,每一列都用表格分隔。请注意,使用此选项,将打开另一个“关键输入变量”窗口。此选项适用于Medium和Advanced用户,允许用户重新运行现有LUT并更新或添加新的输入变量和值。
F. User-defined distribution:可以定义每个输入变量的随机生成值的统计分布。如果要基于真实的自然分布来分布大气变量,请使用此选项。
根据所选择的采样策略,不同的选项将可用于评估停止条件,即确定LUT⑥中包括的节点数量:
G. maximum number of input samples/nodes:当采样是手动(网格化)或拉丁超立方体采样时,此选项是固定的。它也可用于Sobol和Halton序列分布
⑦第一个允许用户引入相对误差阈值(以%为单位)
⑧允许选择表面反射率光谱。与LUT中的大气传输函数相结合,该参数允许生成TOA辐射,用于通过交叉验证评估插值误差。
1.2 输入变量
选定的大气RTM引入关键输入变量, 打开此步骤时,ALG将自动从RTMconf.xml文件中读取与所选RTM的关键输入变量相关联的所有属性。根据所选的用户级别,用户将可以访问或多或少的关键输入变量。
在拉丁超立方体或Sobol/Holton序列分布具有基于LUT样本最大数量选项的停止条件的情况下,用户必须在LUT中引入网格点的总数。此外,用户可以用勾选框进行选择,以包括N维参数空间的2N个角。如果分布为手动(网格化)采样,或者在交叉验证选项上选择了停止条件,则这些参数将不可见。
设置大气、气溶胶及几何参数范围
6SV气溶胶变量
变量G(无量纲)定义了相函数的不对称参数,从而控制了气溶胶相函数的形状,这对气溶胶引起的散射效应有影响。对于-1(后向散射)到+1(前向散射)之间的值,通过与光谱无关的Henyey-Greenstein经验近似对相位函数进行建模。对于典型的气溶胶,在400-2500 nm的光学范围内,陆地上的G值在0.5和0.8之间。如果G=10(默认值),6SV将把G值重置为0.82,这是OPAC大陆平均气溶胶模型的典型值。
ALPHA近似定义了气溶胶消光系数的光谱依赖性,这个变量对气溶胶引起的吸收和散射效应有影响。对于典型的气溶胶,ALPHA值的范围从0到2。
SSA(单散射反照率)是一个无量纲变量,它定义了气溶胶散射和消光系数之间与光谱无关的比率,从而控制了气溶胶吸收和散射的分数。其数值范围从0到1,陆地上的典型气溶胶数值在0.8到1之间,光学范围为400-2500 nm。如果SSA=-1(默认值),6SV将把SSA值重置为0.9,这是OPAC大陆平均气溶胶模型的典型值。
6SV几何变量
1.3 自定义OPAC气溶胶
ALG当前版本允许将OPAC v3.1气溶胶数据库与几个大气RTM耦合。这种耦合通过引入作为RTM输入的OPAC气溶胶的气溶胶光学特性(即消光系数、单散射反照率和不对称参数或相位函数),在定义其他气溶胶类型方面具有更高的通用性。自动耦合。
当选择气溶胶模型作为LUT中的关键输入变量时,用户将获得RTM默认气溶胶模型(例如,MODTRAN的IHAZE)和OPAC气溶胶模型(AERTYPE)。其中,用户定义(OPAC)选项允许用户引入更多的离散气溶胶类型。
1.4 自定义大气剖面
对于那些允许用户定义大气剖面的大气RTM(例如,MODTRAN6),ALG实现了图形用户界面,以自动化和促进新大气剖面的定义。通过该工具,用户可以通过引入高度相关的剖面数据(例如,温度、H2O、O3)来定义额外的大气模型,这些数据后来被格式化并解释为输入大气RTM。
1.5 传感器光谱设置
该配置将设置RTM计算大气传输模型的波长。可以从Sensorconf.xml文件加载一个或多个传感器的预定义光谱配置,ALG将自动确定每个光谱带的最小/最大波长范围和光谱分辨率。ALG将分配比相应传感器光谱分辨率(FWHM)高10倍的光谱过采样因子,并调整光谱范围(最小/最大波长值)。
1.6 高级参数
对于要添加的每个新的高级参数,都应重复此操作。RTMconf.xml文件中的默认值将分配给所有未由用户引入的参数。
点击左下角的Run simulations按钮,根据LUT配置继续运行RTM。这将自动创建一个LUT配置.xml文件(例如,\ALG_v3.2.2\LUTs_folder\LUTfile.xml),该文件将存储所选的输入配置(通用、输入变量、光谱和高级),以便稍后在执行大气RTM和生成输入数据时使用。
1.7. 6sV2.1模型生成LUT 示例
常规配置示例
输入变量示例,参数组合为2*2*3*3*2=72
LUT保存配置文件,xml
输入/输出文件的名称为combN_bandL,其中N是结点node的组合数(如4个变量,每个变量2取值,则node为16),L是定义配置中定义的每个谱带的数字(6SV2.1可以只设置一条光谱带,如0.4-2.5um,2.5nm光谱分辨率即可)
写入6s input文件
进度条将显示6SV输入文件的写入,完成后,6SV执行将运行这些RTM输入文件的模拟,即生成对应的.out文件。
一旦这些模拟完成,我们就可以从这些RTM文件中生成大气LUT。
ALG将这些大气传递函数组合在维度为(n·l)×p的LUT中,其中n是大气传递函数的数量,l是波长的数量,p是输入变量组合的总数,分层数据格式HDF5文件(.h5)中。
ALG界面→Package LUT, 选取LUTfile.xml文件,将查找表打包, ALG将处理RTM输出文件并生成单个LUT HDF5文件(.h5),该文件包含大气传递函数和关于RTM密钥输入变量、参数和光谱配置的头部信息。
2、Matlab读取查找表
%% Extracting and reading LUT data
%1.读取存储在其头文件(tutorial.hdr)中的LUT键输入变量。readLUTheader函数用于读取LUT头文件的内容并将相关信息存储在一个结构中
%sza:该字段包含长度为m(m:LUT节点的数量)的向量,其中太阳天顶角的值对应于每个LUT节点
%LUTheader:该字段包含一个n×m维的矩阵(n:输入变量的数量),其中包含每个关键输入变量组合的值。
%wvl:该字段包含一个具有k个波长的矢量
filename='D:\ALG_v3.2.2\LUTs_folder\6SV2.1_0.4-2.5um\LUTfile';
hdr = readLUThdr([filename,'.h5']);
wvl=hdr.wvl;
Varnames=hdr.varnames;
LUTheader=hdr.LUTheader;
Y = h5read([filename,'.h5'],'/LUTdata');
L0 = Y(1:numel(hdr.wvl),:);%Atmospheric path radiance
Tgas = Y(numel(hdr.wvl)+1:2*numel(hdr.wvl),:);%Total gas transmittance
Etot = Y(2*numel(hdr.wvl)+1:3*numel(hdr.wvl),:);%Total at-surface irradiance due to scattering
Ttot = Y(3*numel(hdr.wvl)+1:4*numel(hdr.wvl),:);%Total upwards transmittance due to scattering
S = Y(4*numel(hdr.wvl)+1:5*numel(hdr.wvl),:);%Spherical albedo
plot(wvl,Tgas(:,50));
%% TOC->TOA:create TOA radiance spectra from a given surface reflectance
%LTOA = L0 + (1/pi)*(bsxfun(@times,Tgas.*Etot.*Ttot,rho))./(1-bsxfun(@times,S,rho));
变量名称
其中,示例配置情况下,共72个参数组合,存储在LUTheader中
以上程序输出参数组合为“50”情况下的总气体透过率,如下图,模拟波段为400-2000nm,光谱分辨率为2.5nm,共641个波段。
以上文档均来自ALG帮助文档翻译。
参考:《ALG v3.0 Installation Guide》