ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows SeaDAS-Client + 虚拟机 Linux OCSSW-Server

Windows SeaDAS-Client + 虚拟机 Linux OCSSW-Server

背景:笔者想要在自己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-6400TCP127.0.0.16400留空6400
OCSSW-6402TCP127.0.0.16402留空6402
OCSSW-6403TCP127.0.0.16403留空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即可。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进