seadas简介
SeaDAS是一个全面的软件包,用于处理,显示,分析和质量控制遥感地球数据。
SeaDAS是NASA OBPG科学软件的官方发行点。SeaDAS的科学处理组件将OBPG算法应用于卫星数据,以表征和校准数据并生成科学质量的OBPG产品。
SeaDAS目前支持超过15个美国和国际卫星飞行任务的科学处理。为了确定地球/海洋表面水平信号,使用了其他一致的辅助数据来校正和校准信号的大气成分。
可以开发定制算法并将其应用在SeaDAS内,以评估海洋,陆地和大气数据,并生成真实彩色图像。
SeaDAS还可以将SeaBASS格式的原位数据集成在一起,以便与相关的卫星数据进行比较分析。
环境准备:
ubuntu20.04版本ubuntu-20.04.5-desktop-amd64.iso
Seadas安装包下载:https://seadas.gsfc.nasa.gov/downloads/
官网目前最新版本为8.3版本
安装ubuntu虚拟机
硬盘设置为100g,不然后期不够用再加比较麻烦。系统安装完成后记得更新ubuntu系统
安装依赖环境
Sudo apt install cmake git gcc-9 g++-9 gfortran-9 tcsh
Sudo apt install bison flex zlib1g-dev libx11-dev
安装seadas软件
将刚刚下载的seadas_8.3.0_linux64_installer.sh放到home文件夹下,在此路径下右键open in terminal,打开终端
在终端输入 sh seadas_8.3.0_linux64_installer.sh,安装seadas软件,安装完成后home->SeaDas->Bin路径下
输入 sh seadas 就可以打开软件了,如果此时终端报错Failed to load module “canberra-gtk-module“,我们再开一个终端sudo apt-get install libcanberra-gtk-module完成后重新sh seadas启动软件就可以了。
-
点击seadas-toolbox的install/update seadas process安装数据和源码全部勾选,如果在下载过程中某个数据出现错误报如下错误requests.exceptions.ConnectionError: HTTPSConnectionPool(host='XXX.XXX.com', port=443):我们只需再次打开该界面把该数据先勾掉暂时不下载,一般会有三四个,运气好的话不会出现这个错误。
-
下载完成后,需要首先设置几个环境变量
输入gedit ~/.bashrc打开环境变量文件,在文件末位输入
export CC=gcc-9
export CXX=g++-9
export FC=gfortran-9
export OCSSWROOT=~/ocssw
保存后退出
输入 source ~/.bashrc 使环境变量生效
如果要编译可以调试的版本把$OCSSWROOT/OCSSW_bash.env文件的OCSSW_DEBUG变量设为OCSSW_DEBUG=1,如果等于0是Release版本。修改后
输入source $OCSSWROOT/OCSSW_bash.env 使环境变量生效。
-
编译三方库 依次执行下面的命令
cd $OCSSWROOT/opt
rm -rf bin include lib share
cd src
./BuildIt.py
-
编译seadas工具箱
cd $OCSSWROOT/ocssw-src
进入路径后发现该路径下也有一个OCSSW_bash.env文件,如果需要调试也要修改OCSSW_DEBUG=1,修改完成后再执行source $OCSSWROOT/OCSSW_bash.env 使环境变量生效。
mkdir build
cd build
cmake ..(cmake可以有额外参数设置)
make
Install(这一步要注意,如果你执行后将会覆盖你安装的编译好的程序,如果不想覆盖要自己设置安装路径即CMAKE_INSTALL_PREFIX变量如set(CMAKE_INSTALL_PREFIX "/home/pengdeyang/ocssw"))
下面为cmake的额外参数设置:
Note: There are a few options you can give to cmake to control what extra software is built:_
BUILD_HISTORICAL - Build the historical code (e.g. old seawifs binaries no longer needed)
BUILD_MISC - Build non-essential code
BUILD_AHMAD_FRASER - Build the AF radiative transfer code
BUILD_ALL - Build ALL the code
The “cmake ..” command is run like this to use one or more of these options:
```cmake .. -DBUILD_HISTORICAL=ON -DBUILD_MISC=ON```
-
我们编译完成后,如果不执行install操作,那么编译的二进制文件就在/home/youruername/ocssw/ocssw_src/build/src里相应的文件夹下
-
调用编译的二进制文件有很多参数,我们以l2gen为例我们使用gui进行操作参数设置完毕后点击SaveParameters 我们就会得到一个参数文件,通常会在home文件夹下打开参数文件我们可以看到我们想要的产品的一些参数文件
-dump_options=false -help=false -version=false geofile=/home/youruername/TERRA_MODIS.20200617T030501.GEO.hdf ifile=/home/youruername/T2020169030500.L1B_LAC l2prod="Rrs_vvv par" ofile=/home/youruername/TERRA_MODIS.20200617T03050gg.L2.OC.nc
我们可以通过命令行的方式来调用该参数文件如
打开终端 输入l2gen的绝对路径,如下
/home/yourname/ocssw/ocssw_src/build/src/l2gen/l2gen par="/home/pengdeyang/ocssw/ocssw_src/build/src/l2gen/l2gen-tmpParFile8859504103289547784.par"然后执行就可以运行了,
更多的调用方式和参数设置请参考http://ocean.stanford.edu/research/seadas_doc/l2gen/l2gen.html
-
调试:通常使用gdb进行调试可以参考下面这篇博客简单了解gdb调试https://blog.csdn.net/q_q2020/article/details/109391153
可是使用gdb命令调试大型c++项目实在是令人头大,所以我们可以利用vscode提供的界面化gdb调试工具。
安装vscode 安装后在插件商店 搜索c/c++拓展插件,和cmaketools工具
安装后,打开我们的/home/pengdeyang/ocssw/ocssw_src文件夹
以l2gen调试为例,打开main_l2gen.c文件然后点击调试按钮,如下图
-
创建launch的json文件创建完成后,打开main_l2gen.c为当前活动文件,设置断点,然后点击运行->调试运行,就可以调试了