基于VB和Grads的台风展望程序开发
2022-07-21刘磊
摘要:海洋石油钻井作业需要在台风生成前就尽早预报出台风移动方向和强度变化,才能更合理地安排海上生产作业和防台应急。本文介绍运用VB和Grads联合编程技术制作台风展望预报程序,结合数值预报产品和台风集合预报产品,实现在台风还未生成前对台风路径和强度变化的预报绘图显示及报单制作,并开发成Windows应用程序,作为海洋石油台风展望业务化程序使用。
关键词:VB Grads 台风展望 海洋石油
随着海洋石油事业不断向深海发展,深水钻探开发作业对气象预报的时效性、准确性提出了更高的要求,尤其是对台风、强对流等灾害性天气的预报愈加重视,一次台风过程停产往往会造成油气田几千万的损失,而撤台不及时则可能造成严重的安全生产事故。
深水作业的撤台避台准备时间,比近海作业要长很多,往往需要一周左右的时间,有时候甚至需要10d以上。然而,西太平洋生成的台风,从生成热带低压(TD)到影响海上作业区大多仅需要3~5d,南海生成的“土台风”甚至刚生成就开始影响作业区了,若等台风生成后再准备撤离,往往已经错过了最佳时机。因此,深水作业项目需要在台风還未生成前就尽早得到台风展望预报,为海上生产和防台决策提供参考依据。
VB(Visual Basic)是一种可视化的编程工具,其开发简单,界面设计、数据库管理等功能十分强大,常用以开发一些可视化的软件或系统。
Grads(Grid Analysis and Display System)绘图软件具有功能强大、显示快捷、图形美观等特点,是当今气象界广泛使用的一种数据处理和显示软件系统,但是每次使用Grads绘图时都要输入很多命令,对于不熟悉Grads的人使用起来就比较繁琐。
本文运用VB和Grads联合编程技术来开发制作台风展望程序,人工确定台风预报位置和强度后,计算机直接生成预报图,实现了台风展望预报制作的业务化应用。
1 台风展望程序的功能设计
1.1 台风展望程序功能模块
根据用户需要和操作习惯,在VB界面中分别设计了地图功能显示、预报信息编辑、台风信息描述及预报报单生成等4个功能模块。
1.2 功能介绍
在预报信息编辑模块可人工设置预报起始时间,间隔12h、24h预报点的经纬度和强度预报信息。应先填写和选择预报点经纬度信息,再勾选预报点左侧的方框即可在地图功能显示模块显示该时次预报点位置;也可以先勾选预报点,再在地图功能显示模块拖动预报点来确定预报点位置。台风信息描述模块中可根据情况对台风未来走向、强度变化及对平台影响等描述进行编辑和修改。待以上信息填写完毕后,即可在预报报单生成模块根据需要生成12h、24h预报间隔的台风展望报单了。
2 台风展望程序的关键技术
根据用户对于台风预报的要求,在台风展望预报图上需要显示的信息有台风生成起始点位置、生成时间、间隔12h与24h预报点位置和强度、平台位置、3级防台警戒圈等,因此在程序设计时需要用台风图标标记台风位置,用不同颜色标注台风强度,在台风起始点位置标注台风生成时间,用不同颜色画出3级防台警戒圈。
关键技术在于用VB自动编辑生成Grads作图批处理文件(ty.gs),代码如下:
基本作图设置:
Print #1, "'set grads off'"
Print #1, "'set vpage 0.1 10.9 0.0 8.5'"
Print #1, "'set parea 0.1 10.9 0.0 8.5'"
Print #1, "'set gxout contour'"
Print #1, "'set mproj latlon'"
Print #1, "'set mpdset hires'"
Print #1, "'set map 15 1 10'"
Print #1, "'set lat 0 35.0'"
Print #1, "'set lon 95.0 152.0'"
Print #1, "'set t 96'"
Print #1, "'set cint 100'"
Print #1, "'d msl/10000'"
For i = 0 To 12
If chk_forecase(i).Value = 1 Then
n = i
End If
Next i
标记平台所在位置和形状:
Print #1, "'q w2xy jingdu weidu'"
Print #1, "x0=subwrd(result,3)"
Print #1, "y0=subwrd(result,6)"
Print #1, "'set line 8'"
Print #1, "'draw mark 5 'x0' 'y0' 0.12'"
Print #1, "'draw mark 5 'x0' 'y0' 0.12'"
按台风图标画各时次预报点,按不同颜色对台风强度进行标记:
For t = 0 To n
Print #1, "'q w2xy " & Format(txt_jingdu(t).Text, "0.0") & " " & Format(txt_weidu(t).Text, "0.0") & "'"
Print #1, "x" & t & "=subwrd(result,3)"
Print #1, "y" & t & "=subwrd(result,6)"
If cbo_str(t).Text = "TC" Then
Print #1, "'draw wxsym 41 'x" & t & "' 'y" & t & "' 0.3 7 6'"
End If
Next t
For t = 0 To n
Print #1, "'draw line 'x" & t & "' 'y" & t & "' 'x" & t + 1 & "' 'y" & t + 1 & "''"
Next t
标注预报起始时间:
Print #1, "'q w2xy " & txt_jingdu(0).Text + 1 & " " & txt_weidu(0).Text + 0.5 & "'"
Print #1, "x" & t & "=subwrd(result,3)"
Print #1, "y" & t & "=subwrd(result,6)"
Print #1, "'set string 1'"
Print #1, "'set font 2'"
Print #1, "'draw string 'x" & t & "' 'y" & t & "' " & tt$(0) & " '"
標注各时次预报点时间信息:
For t = 1 To n
Print #1, "'q w2xy " & txt_jingdu(t).Text + 0.5 & " " & txt_weidu(t).Text + 1 & "'"
Print #1, "x" & t & "=subwrd(result,3)"
Print #1, "y" & t & "=subwrd(result,6)"
Print #1, "'set string 1'"
Print #1, "'set font 2'"
Print #1, "'draw string 'x" & t & "' 'y" & t & "' +" & t & " '"
Print #1, "'set font 0'"
Print #1, "'draw title --- Tropical Cyclone Forecast ---'"
Print #1, "'printim D:\tyzhanwang.png white'"
Print #1, "'quit'"
Print #1, ";"
Close #1
以上VB程序代码可自动生成Grads作图批处理文件,接下来用Shell命令调用Grads中的opengrads –clc命令来执行ty.gs文件,即可画出台风展望预报图,模拟效果图见图1,代码如下:
Shell "D:\...\opengrads -clc " & "D:\...\ty.gs", vbHide
4 结语
利用VB和Grads联合编程技术开发的台风展望程序,可以规避VB作图效果不佳的不足,同时亦可解决Grads作图重复输入命令的麻烦,不仅大幅提高了台风展望预报制作的工作效率,还使台风展望的业务化应用成为现实。
参考文献
[1]朱杰.风云四号卫星闪电数据质量控制与闪电特征分析[D].南京:南京信息工程大学,2020.
王兴,周娟,卞浩瑄,等.互联网+背景下智慧气象业务与服务众创架构研究[J].浙江气象,2020,41(2):17-22.
[3]张灿.海洋气象漂流观测仪资料应用系统的设计与实现[D].南京:南京信息工程大学,2019.
[4]周笑天.基于混合模式集合预报的台风路径预报优化方法研究[D].浙江:浙江大学,2019.
[5]徐光宁.基于深度学习的台风路径与强度预测方法研究[D].哈尔滨:哈尔滨工业大学,2020.
[6]徐香香.极端天气下电网故障在线预警及风险评估技术研究[D].南京:东南大学,2020.
作者简介:刘磊(1984—),男,本科,工程师,研究方向为天气预报。DOI:10.16660/j.cnki.1674-098x.2201-5640-6080中图分类号:P339