
摘要:海洋石油鉆井作業(yè)需要在臺(tái)風(fēng)生成前就盡早預(yù)報(bào)出臺(tái)風(fēng)移動(dòng)方向和強(qiáng)度變化,才能更合理地安排海上生產(chǎn)作業(yè)和防臺(tái)應(yīng)急。本文介紹運(yùn)用VB和Grads聯(lián)合編程技術(shù)制作臺(tái)風(fēng)展望預(yù)報(bào)程序,結(jié)合數(shù)值預(yù)報(bào)產(chǎn)品和臺(tái)風(fēng)集合預(yù)報(bào)產(chǎn)品,實(shí)現(xiàn)在臺(tái)風(fēng)還未生成前對(duì)臺(tái)風(fēng)路徑和強(qiáng)度變化的預(yù)報(bào)繪圖顯示及報(bào)單制作,并開(kāi)發(fā)成Windows應(yīng)用程序,作為海洋石油臺(tái)風(fēng)展望業(yè)務(wù)化程序使用。
關(guān)鍵詞:VB??Grads??臺(tái)風(fēng)展望??海洋石油
隨著海洋石油事業(yè)不斷向深海發(fā)展,深水鉆探開(kāi)發(fā)作業(yè)對(duì)氣象預(yù)報(bào)的時(shí)效性、準(zhǔn)確性提出了更高的要求,尤其是對(duì)臺(tái)風(fēng)、強(qiáng)對(duì)流等災(zāi)害性天氣的預(yù)報(bào)愈加重視,一次臺(tái)風(fēng)過(guò)程停產(chǎn)往往會(huì)造成油氣田幾千萬(wàn)的損失,而撤臺(tái)不及時(shí)則可能造成嚴(yán)重的安全生產(chǎn)事故。
深水作業(yè)的撤臺(tái)避臺(tái)準(zhǔn)備時(shí)間,比近海作業(yè)要長(zhǎng)很多,往往需要一周左右的時(shí)間,有時(shí)候甚至需要10d以上。然而,西太平洋生成的臺(tái)風(fēng),從生成熱帶低壓(TD)到影響海上作業(yè)區(qū)大多僅需要3~5d,南海生成的“土臺(tái)風(fēng)”甚至剛生成就開(kāi)始影響作業(yè)區(qū)了,若等臺(tái)風(fēng)生成后再準(zhǔn)備撤離,往往已經(jīng)錯(cuò)過(guò)了最佳時(shí)機(jī)。因此,深水作業(yè)項(xiàng)目需要在臺(tái)風(fēng)還未生成前就盡早得到臺(tái)風(fēng)展望預(yù)報(bào),為海上生產(chǎn)和防臺(tái)決策提供參考依據(jù)。
VB(Visual Basic)是一種可視化的編程工具,其開(kāi)發(fā)簡(jiǎn)單,界面設(shè)計(jì)、數(shù)據(jù)庫(kù)管理等功能十分強(qiáng)大,常用以開(kāi)發(fā)一些可視化的軟件或系統(tǒng)。
Grads(Grid Analysis and Display System)繪圖軟件具有功能強(qiáng)大、顯示快捷、圖形美觀等特點(diǎn),是當(dāng)今氣象界廣泛使用的一種數(shù)據(jù)處理和顯示軟件系統(tǒng),但是每次使用Grads繪圖時(shí)都要輸入很多命令,對(duì)于不熟悉Grads的人使用起來(lái)就比較繁瑣。
本文運(yùn)用VB和Grads聯(lián)合編程技術(shù)來(lái)開(kāi)發(fā)制作臺(tái)風(fēng)展望程序,人工確定臺(tái)風(fēng)預(yù)報(bào)位置和強(qiáng)度后,計(jì)算機(jī)直接生成預(yù)報(bào)圖,實(shí)現(xiàn)了臺(tái)風(fēng)展望預(yù)報(bào)制作的業(yè)務(wù)化應(yīng)用。
1 臺(tái)風(fēng)展望程序的功能設(shè)計(jì)
1.1 臺(tái)風(fēng)展望程序功能模塊
根據(jù)用戶需要和操作習(xí)慣,在VB界面中分別設(shè)計(jì)了地圖功能顯示、預(yù)報(bào)信息編輯、臺(tái)風(fēng)信息描述及預(yù)報(bào)報(bào)單生成等4個(gè)功能模塊。
1.2 功能介紹
在預(yù)報(bào)信息編輯模塊可人工設(shè)置預(yù)報(bào)起始時(shí)間,間隔12h、24h預(yù)報(bào)點(diǎn)的經(jīng)緯度和強(qiáng)度預(yù)報(bào)信息。應(yīng)先填寫(xiě)和選擇預(yù)報(bào)點(diǎn)經(jīng)緯度信息,再勾選預(yù)報(bào)點(diǎn)左側(cè)的方框即可在地圖功能顯示模塊顯示該時(shí)次預(yù)報(bào)點(diǎn)位置;也可以先勾選預(yù)報(bào)點(diǎn),再在地圖功能顯示模塊拖動(dòng)預(yù)報(bào)點(diǎn)來(lái)確定預(yù)報(bào)點(diǎn)位置。臺(tái)風(fēng)信息描述模塊中可根據(jù)情況對(duì)臺(tái)風(fēng)未來(lái)走向、強(qiáng)度變化及對(duì)平臺(tái)影響等描述進(jìn)行編輯和修改。待以上信息填寫(xiě)完畢后,即可在預(yù)報(bào)報(bào)單生成模塊根據(jù)需要生成12h、24h預(yù)報(bào)間隔的臺(tái)風(fēng)展望報(bào)單了。
2 臺(tái)風(fēng)展望程序的關(guān)鍵技術(shù)
根據(jù)用戶對(duì)于臺(tái)風(fēng)預(yù)報(bào)的要求,在臺(tái)風(fēng)展望預(yù)報(bào)圖上需要顯示的信息有臺(tái)風(fēng)生成起始點(diǎn)位置、生成時(shí)間、間隔12h與24h預(yù)報(bào)點(diǎn)位置和強(qiáng)度、平臺(tái)位置、3級(jí)防臺(tái)警戒圈等,因此在程序設(shè)計(jì)時(shí)需要用臺(tái)風(fēng)圖標(biāo)標(biāo)記臺(tái)風(fēng)位置,用不同顏色標(biāo)注臺(tái)風(fēng)強(qiáng)度,在臺(tái)風(fēng)起始點(diǎn)位置標(biāo)注臺(tái)風(fēng)生成時(shí)間,用不同顏色畫(huà)出3級(jí)防臺(tái)警戒圈。
關(guān)鍵技術(shù)在于用VB自動(dòng)編輯生成Grads作圖批處理文件(ty.gs),代碼如下:
基本作圖設(shè)置:
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
標(biāo)記平臺(tá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'"
按臺(tái)風(fēng)圖標(biāo)畫(huà)各時(shí)次預(yù)報(bào)點(diǎn),按不同顏色對(duì)臺(tái)風(fēng)強(qiáng)度進(jìn)行標(biāo)記:
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
標(biāo)注預(yù)報(bào)起始時(shí)間:
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) & " '"
標(biāo)注各時(shí)次預(yù)報(bào)點(diǎn)時(shí)間信息:
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程序代碼可自動(dòng)生成Grads作圖批處理文件,接下來(lái)用Shell命令調(diào)用Grads中的opengrads –clc命令來(lái)執(zhí)行ty.gs文件,即可畫(huà)出臺(tái)風(fēng)展望預(yù)報(bào)圖,模擬效果圖見(jiàn)圖1,代碼如下:
Shell "D:\...\opengrads -clc " & "D:\...\ty.gs", vbHide
4 結(jié)語(yǔ)
利用VB和Grads聯(lián)合編程技術(shù)開(kāi)發(fā)的臺(tái)風(fēng)展望程序,可以規(guī)避VB作圖效果不佳的不足,同時(shí)亦可解決Grads作圖重復(fù)輸入命令的麻煩,不僅大幅提高了臺(tái)風(fēng)展望預(yù)報(bào)制作的工作效率,還使臺(tái)風(fēng)展望的業(yè)務(wù)化應(yīng)用成為現(xiàn)實(shí)。
參考文獻(xiàn)
[1]朱杰.風(fēng)云四號(hào)衛(wèi)星閃電數(shù)據(jù)質(zhì)量控制與閃電特征分析[D].南京:南京信息工程大學(xué),2020.
王興,周娟,卞浩瑄,等.互聯(lián)網(wǎng)+背景下智慧氣象業(yè)務(wù)與服務(wù)眾創(chuàng)架構(gòu)研究[J].浙江氣象,2020,41(2):17-22.
[3]張燦.海洋氣象漂流觀測(cè)儀資料應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京信息工程大學(xué),2019.
[4]周笑天.基于混合模式集合預(yù)報(bào)的臺(tái)風(fēng)路徑預(yù)報(bào)優(yōu)化方法研究[D].浙江:浙江大學(xué),2019.
[5]徐光寧.基于深度學(xué)習(xí)的臺(tái)風(fēng)路徑與強(qiáng)度預(yù)測(cè)方法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2020.
[6]徐香香.極端天氣下電網(wǎng)故障在線預(yù)警及風(fēng)險(xiǎn)評(píng)估技術(shù)研究[D].南京:東南大學(xué),2020.
作者簡(jiǎn)介:劉磊(1984—),男,本科,工程師,研究方向?yàn)樘鞖忸A(yù)報(bào)。DOI:10.16660/j.cnki.1674-098x.2201-5640-6080中圖分類號(hào):P339