基于Qt的气象热力学图解的绘制
2018-07-05聂于棚仵建勋杨道勇西昌卫星发射中心四川西昌65000洛阳电子装备试验中心河南洛阳47003
施 萧 聂于棚 仵建勋 杨道勇 李 刚(西昌卫星发射中心 四川 西昌 65000)(洛阳电子装备试验中心 河南 洛阳 47003)
0 引 言
随着网络安全上升成国家战略[1],基于国产操作系统(比如中标麒麟[2]等)的自主可控变得尤为迫切,而Qt则以其良好的跨平台性能成为自主可控趋势下的优先选择。Qt是一个支持跨平台C++应用程序的开发框架,广泛应用于图形界面开发。Qt不仅拥有完善的C++图形库,还集成了数据库、OpenGL、多媒体、网络、XML、WebKit等,其核心库也加入了进程、线程模块。Qt能够在Windows、Linux、OS X、Android平台上进行使用,极大地方便了不同操作系统下程序共享与移植。
天气预报业务中,包括MICAPS[3](气象信息综合分析处理系统)在内的大部分软件在跨平台方面都具有局限性,因此可以选择Qt作为自主可控趋势下气象行业中的开发工具。热力学图解是气象中研究局地大气垂直结构及特性所引入的图解,能够帮助预报员更加准确地判断未来几小时以内的天气潜势。MICAPS中的热力学图解模块包括站点的各种层结量、T-lnP图、V3-θ图等,功能比较完善。本文将在中标麒麟操作系统上,基于Qt实现气象热力学图解的绘制,并仿照MICAPS进行图解的完善。
1 热力学图解界面设计
气象热力学图解的数据源是大气参数的计算,其绘制的整体思路是在面向对象的基础上,相继实现地图及站点窗口、T-lnP窗口、V3-θ窗口、对流参数窗口、层结量窗口以后,通过类的提升、窗口布局、信号与槽等方式进行绘制与交互。基本流程如图1所示。
图1 热力学图解实现的基本技术流程
1.1 大气参数的计算
热力学图解中用到的大气参数涉及到温度、露点、各层风场、位温、水汽压、假相当位温、干绝热线、假绝热线、抬升凝结高度、自由对流高度、平衡高度、对流抑制能、对流有效位能的计算[5-6]。此外,图解还将显示常用的其他物理参数。这些参数可以分为层结参数和对流参数。以上涉及到的参数如表1所示。
表1 热力学图解中涉及到的大气参数
气象探空会得到温、压、湿、风等基本量,通过这些基本量可以计算得到其他层结量和物理参数。计算程序选用气象中常用的Fortran语言。中标麒麟中的Fortran和C系列的编译器都属于GNU,所以编译运行比较方便。目前,要想共同实现擅长科学计算的Fortran和Qt显示界面的开发,混合编程是一种不错的选择[7-8]。这里通过Qt的QProcess类调用Fortran的可执行文件。在调用之前需要将Fortran程序设置好命令行参数(时间变量),便于实现业务化运行。
其中在Fortran程序内使用函数get_command_argument进行命令行参数的引入,随后进行编译生成可执行文件。
call get_command_argument(1,time)
而Qt在定义QProcess变量后,使用start()函数调用Fortran的可执行文件。
arguments< QProcess.start(tlog_exe,arguments) 图2所示的显示界面仿照MICAPS的热力学图解的主体,由于探空站点的分析多集中在中国区域,因此抛弃了MICAPS中的双窗口显示,改成单窗口显示,将地图部件放在界面右下,对流参数同MICAPS放在右上,而T-lnP、V3-θ、站点层结资料放在左边。对流参数分为6类,每一类都存放在一个QTableWidget中,6类统一存放在QToolbox容器控件类中。T-lnP、V3-θ、站点层结资料利用QTabWidget容器控件类进行存放。 图2 热力学图解的显示界面设计 气象业务中,地图的投影常见的有墨卡托、兰伯特、极射赤面三种,墨卡托最简单,且适用于中低纬度,因此采用墨卡托投影进行地图绘制。地图的绘制依据Qt中画多边形的方式,即将中国国界经纬度点(岛屿边界经纬点)用QPainterPath进行连接,然后用QPainter的drawPath()函数绘制多边形,生成地图。两个类在绘制之前,要将经纬度点依据墨卡托投影进行转化。由于每个探空时次收集的探空站点数目是不定的,这里对MICAPS第5类探空数据进行处理,获取该时次探测站点,经过墨卡托投影绘制在地图上(图3)。地图的绘制还有一个作用就是数据的通信,利用QMap容器类将站点及该站点对应的层结量、对流参数等写入序列,利用QWidget的鼠标点击或者移动事件进行响应,得到一组关于某站点的层结和对流参数序列,并把该数据序列提供给T-lnP、V3-θ、对流参数和层结量显示部件。 QMap //各站点及对应的探测——序列 QMap //各站点及对应的层结量——序列 QMap //各站点及对应的对流参数——序列 QVector //某一站点探测序列 QVector //某一站点层结序列 QVector //某一站点对流参数 热力学图解用来显示某一站点上空大气的垂直结构,通过QWidget上的鼠标点击或移动,可以获取响应鼠标事件的站点大气参数,并将其显示在图解上,其核心构件是T-lnP、V3-θ图。 T-lnP图是分析大气层结稳定度的基本工具,常用于分析对流性天气;V3-θ图常用来判断大气滚流对天气演变的影响来预报天气转折性变化。T-lnP、V3-θ图的绘制有共同处,都是提前设置好横纵坐标,横坐标单位都是℃,纵坐标单位都是hPa,此外纵坐标要进行对数压力处理,即取气压的对数。 T-lnP部件需要绘制4条曲线,分别是气温的探空层结、露点的探空层结、气块的状态曲线(干绝热到假绝热)、各层风矢量(依附气温层结线),另外T-lnP图还要进行填色,区分对流有效位能CAPE和对流抑制能CIN。V3-θ也要绘制4条曲线,分别是位温层结线、假相当位温层结线、饱和假相当位温层结线、各层风矢量(依附位温层结线)。 各种层结线的绘制在前述层结量计算的基础上,利用QPainterPath进行绘制。风矢量需要定义一个绘制函数,该函数包括风向杆、凤羽的绘制,先画风向杆确定风向,然后根据风速绘制凤羽,其中“一长条”表示4 m/s、“半条”表示2 m/s、一个“空三角”表示20 m/s、一个“实三角”表示50 m/s。 绘制的难点在于T-lnP中气块的层结以及CAPE和CIN的填色。T-lnP图包含了干绝热线和假绝热线。干绝热线是气块在垂直方向上按照大气干绝热温度递减率进行递减形成的一条直线,原因在于干绝热递减率是确定值。而假绝热递减率不定,由于气块假绝热上升时有一个守恒量,即假相当位温。因此,可以利用假相当位温进行假绝热线的绘制,具体就是对假绝热线逐段计算,一般是取逐10 hPa。在气温层结和气块曲线双线之间的填色时,还需要对干绝热线和气温层结线也进行相对应的逐10 hPa的插值计算,这样双线廓线的层数是一致的,在连续两个点进行气温的判断,确定是正值(CAPE)还是负值(CIN),然后填色。图4是T-lnP图的绘制流程。 图4 T-lnP和V3-θ的绘制流程 以下是干绝热线的算法。 //干绝热线 ta=theta00*pow((P_L/1000.),RD/CPD)-273.15;qk_tp10< P_L=P_L-10 假绝热中,假相当位温是不变的。 //假绝热线 thse1=cal_thse(P_L,t1); //假相当位温 thse2=cal_thse(P_L,t1-0.1); t2=t1-(thse1-thse)/(thse1-thse2)*0.1; if(t2<0&&KZERO==1) { thse=cal_thse(P_L,t2); KZERO=0; } 气温层结也需要进行对数压力插值,以实现逐10 hPa的气温序列。 //气温层结插值 te=t_L+(t_L-t_T)/log(p_L/p_T)*log(pbot/p_L) 在关键的T-lnP、V3-θ部件实现以后,再加上对流参数的表格显示,再结合前述额地图部件,热力学图解中的子部件绘制工作就完成了。将各子部件引入显示框架,利用信号槽机制实现消息的传递,热力学图解绘制过程结束。 选择2017年10月7日的天气个例进行实际应用,10月7日海口市在午后出现强对流天气,伴随了雷暴和降水。图5主要显示了T-lnP图、地图及对流参数。对应T-lnP图可以发现,海口站在早上8时,CAPE值远远大于CIN值,说明海口上空不稳定能量较大;而且在500~400 hPa和200~150 hPa有明显的风场切变,不稳定能量加上垂直风场切变,有利于海口上空强对流的发生发展,在特定天气系统的触发下,雷暴天气就发生了。 图5 热力学图解的整体情况 图6是MICAPS的T-lnP图,可以发现这里通过Qt绘制的图例与MICAPS图例是吻合的,说明算法是一致且可靠的,存在的不足是在部分细节上还有待提高,比如图形需要美化、特性层需要注明等。 图6 MICAPS中的T-lnP图 本文在中标麒麟操作系统上,基于Qt(C++)和Fortran,结合MICAPS的热力学图解显示界面,实现了国产操作系统上热力学图解的绘制。绘制得到的图解包含了T-lnP、V3-θ、以及25种层结量和33种对流参数。该热力学图解可以在不同操作系统上进行显示和交互,既是国产操作平台下业务软件开发的一种尝试,也丰富了不同平台下气象热力学图解的开发显示。 [1] 国家网络空间安全战略[OL].2016.http://www.cac.gov.cn/2016-12/27/c_1120195926.htm. [2] 中标软件介绍[OL].2017.http://www.cs2c.com.cn/index.php?id=106. [3] 李月安,曹莉,高嵩,等.MICAPS预报业务平台现状与发展[J].气象,2010,36(7):50- 55. [4] 朱文剑,郑永光.基于NCL的斜温T-logP图的改进及其应用前景[J].天气预报,2013,5(1):19- 23. [5] 陶祖钰.基础理论与预报实践[J].气象,2011,37(2):129- 135. [6] 陈祯烈,周莉蓉,郝利萍.V-3θ图在区域暴雨预报中的应用[J].气象,2003,29(1):20- 22. [7] 蒲军平,刘鹏.VB界面设计与FORTRAN数值计算功能的组合应用[J].计算机应用与软件,2010,27(12):148- 150. [8] 庞晓琼,陈立潮,陈文俊.基于Web服务的气象信息发布服务系统[J].计算机应用与软件,2007,24(9):88- 90.1.2 显示界面设计
1.3 地图的绘制
2 热力学图解的实现
2.1 T-lnP、V3-θ窗口部件的实现
2.2 热力学图解的实现及应用
3 结 语