背景:笔者想要在自己Windows系统上使用SeaDAS,然而,安装之后发现要想使用核心功能l2gen等,还需要另外安装OCSSW程序,并且OCSSW不支持在Windows系统安装,所以笔者需要通过Windows SeaDAS-Client + 虚拟机 Linux OCSSW-Server相互配合的形式,实现SeaDAS软件的无障碍使用。
当然,如下图所示,OCSSW-Server也可以选择安装在remoteServer或docker内;另外,如果你对可视化没有特别需求,其实也可以不要SeaDAS桌面软件,只安装OCSSW,所有操作使用命令行形式执行。
本文主要参考的网站或博客有:
SeaDAS-OCSSW 客户端服务器配置 |NASA地球数据
Win+Wsl实现Seadas+ocssw安装与使用-CSDN博客
学习笔记——Linux系统下安装seadas-ocssw模块,并对GOCI数据处理得到Rrc数据-CSDN博客
VirtualBox/SharedFolders - 社区帮助维基
Win+Wsl实现Seadas+ocssw安装与使用-CSDN博客
一、安装虚拟机
可以参考学习笔记——Linux系统下安装seadas-ocssw模块,并对GOCI数据处理得到Rrc数据-CSDN博客
二、Linux系统安装Ocssw
主要参考Win+Wsl实现Seadas+ocssw安装与使用-CSDN博客,写得非常详细了。
WSL其实就是Windows系统中隔离出来的一个Linux环境,因此,在虚拟机中的操作和在WSL中的操作完全一致
三、Windows系统安装SeaDAS
略
四、二者通信
主要参考SeaDAS-OCSSW 客户端服务器配置 |NASA地球数据,但这篇文章中有一些不够清晰的地方。
1、这个.jar 可以从 NASA OceanData 官方目录获取,目前文件名是seadas-toolbox-ocsswserver.jar。
cd ~ curl -L --retry 5 --retry-all-errors \ -o seadas-toolbox-ocsswserver.jar \ 'https://oceandata.sci.gsfc.nasa.gov/directdataaccess/SeaDAS/seadas-toolbox-ocsswserver.jar'2、这个ocsswserver.config文件需要自己创建
touch ~/ocsswserver.config使用vim或nano文本编辑器填入以下内容:(注意,文件路径中不要出现类似“~”的省略路径,要填写绝对路径)
ocsswrest.version=1.0 baseUriPortNumber=6400 ocsswroot=/home/alice/ocssw serverWorkingDirectory=/media/sf_VBShared clientServerSharedDir=true keepIntermediateFilesOnServer=false processInputStreamPortNumber=6402 processErrorStreamPortNumber=6403接着检查上述两个文件是否存在:
ls -lh ~/seadas-toolbox-ocsswserver.jar ~/ocsswserver.config使用正确名称启动:
cd ~ java -Xmx2G -jar seadas-toolbox-ocsswserver.jar ocsswserver.config正常启动应看到类似如下信息:
Started listener bound to [0.0.0.0:6400] HttpServer Started Press Ctrl+C to stop在SeaDAS客户端设置OCSSW Location: virtualMachine、OCSSW Shared Dir: D:\VBShared(这是笔者的共享文件夹路径)后,尝试在SeaDAS中点击l2gen,查看客户端和服务端是否连接成功:
或者直接在Windows PowerShell测试:
如果端口测试为False,说明还需要在 VirtualBox 中配置6400、6402、6403三个 NAT 端口转发规则。
完全关闭虚拟机,然后进入:
VirtualBox → 选择虚拟机 → 设置 → 网络确认:
连接方式:网络地址转换(NAT)点击:
高级 → 端口转发添加三条规则:
| 名称 | 协议 | 主机 IP | 主机端口 | 子系统 IP | 子系统端口 |
|---|---|---|---|---|---|
| OCSSW-6400 | TCP | 127.0.0.1 | 6400 | 留空 | 6400 |
| OCSSW-6402 | TCP | 127.0.0.1 | 6402 | 留空 | 6402 |
| OCSSW-6403 | TCP | 127.0.0.1 | 6403 | 留空 | 6403 |
虚拟机中的 Server 启动并保持运行后,在 Windows 执行如下命令,应显示TcpTestSucceeded : True,服务端与客户端二者成功连接。
Test-NetConnection 127.0.0.1 -Port 6400也可以在 Windows 浏览器访问:
http://127.0.0.1:6400/ocsswws/application.wadl在 Ubuntu 中获取虚拟机 IP:
hostname -I假设得到192.168.1.105,在 Windows 测试:
Test-NetConnection 192.168.1.105 -Port 6400如果虚拟机 IP 可以连接,而127.0.0.1不能连接,就能确定是 VirtualBox 端口转发没有配置成功。如果两者都不能连接,则检查服务是否仍在运行,以及 Ubuntu 防火墙:
sudo ufw allow 6400/tcp sudo ufw allow 6402/tcp sudo ufw allow 6403/tcp端口连通后,SeaDAS 客户端保持virtualMachine和D:\VBShared即可。