
问题引入
MeteoInfo是用Java语言开发的,其脚本语言Jython是Python的Java版本,因此有Java环境就可以运行MeteoInfo软件。Java虚拟平台的核心是Java虚拟机(JVM),它是Java语言实现跨平台能力的关键组件。JVM通过将Java程序编译成与平台无关的字节码(.class文件),并在不同操作系统上解释或编译这些字节码,从而实现“一次编译,到处运行”的特性。
得益于Java语言强劲的跨平台能力,MeteoInfo软件可以在Windows, Linux, Mac OS等不同平台上运行,但是这种跨平台方式的前提是计算机上安装有Java运行环境。Linux平台上可以安装OpenJDK,版本最低要求是Java 8,但推荐Java 11,一定要是64位版本。
这里主要讨论一下在麒麟Linux操作系统以及中国气象局曙光派高性能计算机上运行MeteoInfo。
可以在终端输入命令: java -version 查看Java安装情况。
MeteoInfo在Linux上运行
在MeteoInfo网站上下载MeteoInfo软件,是一个zip压缩文件,在Linux中解压该文件即可,无需安装。解压后生成的 MeteoInfo 目录中有 mimap.sh 和 milab.sh 文件,分别对应MeteoInfoMap和MeteoInfoLab软件,需要将两个文件的权限修改为可执行。最好将 MeteoInfo 目录放在 PATH 环境变量中,这样就可以在任务路径中直接运行 MeteoInfo。
将文件权限修改为可执行,可以在终端中输入命令:chmod +x milab.sh
MeteoInfo软件的绘图功能,尤其是三维绘图功能用到了OpenGL,因此也需要看看Linux中是否安装了OpenGL,是否可以绘制三维图形?
查看OpenGL版本的命令:glxinfo | grep "OpenGL version"
如果安装有OpenGL,可以用 glxgears 看看是否能正常显示三维图形:

如果Linux电脑中没有OpenGL,请先自行安装。如果实在没有权限安装,且对三维图形绘制没有需求,也可以无需OpenGL来运行MeteoInfo。
MeteoInfoMap目前没有用到OpenGL,不影响运行;MeteoInfoLab脚本程序中绘图语句前可以添加加一行 figure(opengl=False) ,软件将使用Java 2D来绘制面板和图形。
麒麟操作系统中运行MeteoInfo
麒麟操作系统是基于Linux的国产操作系统,应用比较广泛。X11一直是Linux上的默认窗口系统,近年来Wayland作为新的窗口系统在Linux上得到广泛使用。麒麟操作系统较新版本上Wayland成为默认的窗口系统,MeteoInfo三维图形使用的JOGL(OpenGL的Java绑定)对Wayland的支持不够,导致MeteoInfoLab程序绘制图形出错。
解决办法是在milab.sh文件中运行MeteoInfoLab程序的命令(以java开始的两行)中进行修改,在java后面加上-Djogl.disable.opengles=true参数。经过网友的测试,可以在麒麟系统中正常使用MeteoInfoLab绘图。

可以用 echo $XDG_SESSION_TYPE 命令显示Linux的窗口系统。
中国气象局曙光派高性能计算机上运行MeteoInfo
中国气象局的曙光派高性能计算机需要通过终端软件去远程连接,这里推荐使用MobaXterm:功能强大、个人用户免费、且支持OpenGL。
在MobaXterm的设置界面中X11栏将OpenGL acceleration设置为Software即可。

通过MobaXterm连接曙光派高性能计算机并运行MeteoInfoLab绘制三维图:
