劉應(yīng)桂
(民航廣西空管分局,廣西 南寧 530048)
南寧機(jī)場目前在用的CINRAD/CC 型天氣雷達(dá)是新一代的C 波段多普勒雷達(dá),由安徽四創(chuàng)所研制。多普勒天氣雷達(dá)通過發(fā)射機(jī)發(fā)射電磁波,接收機(jī)接收從氣象目標(biāo)后向散射回來的電磁波的方式來探測氣象目標(biāo),在接收到的回波信號中包含氣象目標(biāo)的回波強(qiáng)度、徑向速度和速度譜寬等信息[1],這些信息保存在雷達(dá)的基數(shù)據(jù)中。通過解析保存的基數(shù)據(jù),可以得到雷達(dá)探測范圍內(nèi)的氣象目標(biāo)信息,將這些信息顯示出來后,產(chǎn)生應(yīng)用價值。多普勒天氣雷達(dá)是制作短時天氣預(yù)報和警戒強(qiáng)對流天氣的強(qiáng)有力工具[2],廣泛使用于機(jī)場和氣象部門。目前,雷達(dá)廠家提供的基數(shù)據(jù)識別顯示軟件可顯示氣象目標(biāo)的基本信息圖,但提供的功能比較固定,擴(kuò)展性不強(qiáng),并且不能進(jìn)行基數(shù)據(jù)的二次開發(fā)應(yīng)用。
本文基于Python 提供了一種對雷達(dá)基數(shù)據(jù)進(jìn)行解析的方法,對雷達(dá)基數(shù)據(jù)的解析可用于基數(shù)據(jù)的二次開發(fā)應(yīng)用,大大增加了可應(yīng)用基數(shù)據(jù)的場景?;鶖?shù)據(jù)的應(yīng)用場景有:當(dāng)單部天氣雷達(dá)因低仰角的阻擋而造成某一角度的回波缺失時,可利用其他雷達(dá)的基數(shù)據(jù)進(jìn)行補(bǔ)全;整合多省的天氣雷達(dá)基數(shù)據(jù)制作多區(qū)域的氣象目標(biāo)回波圖;用雷達(dá)基數(shù)據(jù)結(jié)合機(jī)器學(xué)習(xí)對氣象目標(biāo)的移動路徑進(jìn)行精準(zhǔn)趨勢預(yù)測等。
南寧機(jī)場的多普勒雷達(dá)基數(shù)據(jù)是一種C 語言結(jié)構(gòu)型的二進(jìn)制字節(jié)文件,由文件標(biāo)識(12 字節(jié))、文件頭(2 048 字節(jié))和數(shù)據(jù)記錄塊(其余字節(jié))3 個部分組成[3]。文件標(biāo)識記錄了雷達(dá)數(shù)據(jù)的標(biāo)識信息,文件頭記錄了雷達(dá)站的基本信息和雷達(dá)的各項參數(shù)設(shè)置情況,數(shù)據(jù)記錄塊則以極坐標(biāo)的形式記載了氣象目標(biāo)的回波數(shù)據(jù)。
天氣雷達(dá)在一系列不同仰角下進(jìn)行360°的方位掃描的過程被稱為一次完整的體積掃描,一個仰角對應(yīng)一層掃描。在每層掃描中,雷達(dá)的最大探測距離稱為它的掃描半徑,南寧機(jī)場雷達(dá)的掃描半徑為150 km,將掃描半徑進(jìn)行若干等分,每一個相等的長度稱為庫長,一個掃描半徑下庫長的個數(shù)叫庫數(shù),雷達(dá)進(jìn)行一層掃描時,中間包含的掃描半徑個數(shù)叫徑向個數(shù),庫長、庫數(shù)和掃描半徑三者間的關(guān)系如圖1 所示。
圖1 掃描模型
雷達(dá)每層掃描的參數(shù)數(shù)據(jù)結(jié)構(gòu)保存在基數(shù)據(jù)的文件頭中,層參數(shù)數(shù)據(jù)結(jié)構(gòu)包含了雷達(dá)每層掃描的最大可測距離(掃描半徑)、庫長、庫數(shù)、徑向個數(shù)和仰角等信息,它們的結(jié)構(gòu)參數(shù)如表1 所示。
表1 部分層結(jié)構(gòu)參數(shù)
基數(shù)據(jù)的數(shù)據(jù)記錄塊記錄了雷達(dá)回波的強(qiáng)度、徑向速度和速度譜寬值,三者的數(shù)值以極坐標(biāo)的數(shù)據(jù)格式按順序進(jìn)行分開保存,每個掃描半徑下的數(shù)據(jù)分別對應(yīng)著一個獨立的數(shù)據(jù)記錄塊。數(shù)據(jù)記錄塊的部分?jǐn)?shù)據(jù)結(jié)構(gòu)如表2 所示。
表2 數(shù)據(jù)記錄塊的部分?jǐn)?shù)據(jù)結(jié)構(gòu)
其中,[n]為每層掃描時的庫數(shù)。在氣象目標(biāo)對多普勒雷達(dá)作相對運(yùn)動時,其運(yùn)動速度沿雷達(dá)徑向的速度為徑向速度,運(yùn)動速度的平均起伏為速度譜寬。
Python 是一種開源的腳本語言,是計算機(jī)編程語言中的一種,具有上手簡單、代碼簡潔、可讀性高的特點,并且有大量可直接調(diào)用的封裝庫,是進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)分析的強(qiáng)有力工具。用Python 程序?qū)走_(dá)基數(shù)據(jù)進(jìn)行解析的流程如圖2 所示。
圖2 Python 解析流程圖
流程圖中主要用到的封裝庫有struct 庫、numpy庫和matplotlib 庫3 種,它們的主要作用如表3 所示。
表3 相關(guān)的Python 庫
其中,Python 不能直接讀取C 語言結(jié)構(gòu)型的二進(jìn)制字節(jié)數(shù)據(jù),需要通過struct 庫對二進(jìn)制字節(jié)文件進(jìn)行讀取。numpy 庫是進(jìn)行大量數(shù)據(jù)處理和數(shù)據(jù)分析的第三方庫,可用于多維的數(shù)組運(yùn)算和矩陣運(yùn)算,功能強(qiáng)大,廣泛使用于科學(xué)計算領(lǐng)域。matplotlib 庫是Python中的圖形庫,可以通過它來繪制直方圖、扇形圖、極坐標(biāo)圖等常見圖形[4],它里面還有與圖形繪制相關(guān)的顏色管理模塊,可以通過顏色管理模塊來設(shè)置數(shù)值與顏色的映射關(guān)系以及色標(biāo)的制作。
解析過程以南寧機(jī)場2021-08-15T06:28 有較強(qiáng)降水回波時的基數(shù)據(jù)QZGNNBVT210815062815.014 為例進(jìn)行說明,文件名中的ZGNN 為南寧機(jī)場的四字代碼,B 為基數(shù)據(jù)標(biāo)識碼,V 表示體積掃描,T 代表回波強(qiáng)度、徑向速度、速度譜寬三要素,文件名中的數(shù)字為一次體積掃描結(jié)束時的時間,后綴名014 表示天氣雷達(dá)完成一個完整體積掃描的掃描層數(shù)為14 層。
雷達(dá)每層掃描的主要關(guān)鍵參數(shù)有掃描半徑、庫長、庫數(shù)、徑向個數(shù)和回波強(qiáng)度值等參數(shù),以讀取第一層掃描時的數(shù)據(jù)為例,部分代碼展示如下:
其中,buffer 為讀取到的二進(jìn)制字節(jié)數(shù)據(jù),x 表示回波強(qiáng)度的字節(jié)起始位置。
極坐標(biāo)散點圖的繪制需要知道每個坐標(biāo)點相對坐標(biāo)原點的角度和距離,由徑向個數(shù)可得到每一條掃描半徑的角度,由庫數(shù)可得到坐標(biāo)點相對原點的距離。在第一層的掃描中,其徑向個數(shù)為593 條,庫長可看成單位長度,庫數(shù)為1 000 個,為了在一個極坐標(biāo)中將第一層的每個坐標(biāo)點繪制出來,需要創(chuàng)建3 個593 行1 000 列的數(shù)組,分別用來保存每個坐標(biāo)點的角度、距離和強(qiáng)度值。
用matplotlib 庫繪制極坐標(biāo)散點圖時,回波強(qiáng)度的dBZ 值大小對應(yīng)了每個坐標(biāo)點的顏色深淺,為了對圖形的顏色進(jìn)行統(tǒng)一管理,可以對圖形的色標(biāo)進(jìn)行自定義設(shè)置。圖形繪制的部分代碼展示如下:
其中,colors 中的顏色以十六進(jìn)制顏色碼表示,從左至右依次為:白色、淡灰色、深灰色、淡青色、青色、深青色、淡藍(lán)色、藍(lán)色、深藍(lán)色、淡綠色、綠色、深綠色、淡黃色、黃色、深黃色、淡紅色、紅色、深紅色、淡紫色、深紫色。
圖3 和圖4 分別為南寧機(jī)場2021-08-15T06:28與2021-08-15T08:43 兩份基數(shù)據(jù)的回波對比圖。其中,左側(cè)為廠家基數(shù)據(jù)識別顯示軟件解析的雷達(dá)回波強(qiáng)度圖,右側(cè)為本文用Python 解析基數(shù)據(jù)的回波強(qiáng)度圖。通過與廠家的回波圖對比可以發(fā)現(xiàn),Python 對基數(shù)據(jù)的解析達(dá)到了比較好的效果,將氣象目標(biāo)的回波信息全部解析顯示了出來。另外,從圖中可以看到,06:28在南寧機(jī)場的西南方向有較強(qiáng)的塊狀降水回波出現(xiàn),到08:43 本場上方出現(xiàn)了紅色的降水回波,預(yù)報員和管制員可參考回波信息向航空用戶提供相應(yīng)的服務(wù)。
圖3 06:28 時回波對比圖
圖4 08:43 時回波對比圖
本文通過Python 實現(xiàn)對南寧機(jī)場多普勒天氣雷達(dá)基數(shù)據(jù)的讀取和解析,較好地將基數(shù)據(jù)中保存的氣象目標(biāo)回波強(qiáng)度信息還原顯示了出來,經(jīng)過與廠家軟件顯示的回波強(qiáng)度圖對比,兩者間的差別較小。對雷達(dá)基數(shù)據(jù)的解析,有利于促進(jìn)對基數(shù)據(jù)的二次開發(fā)利用,減少了利用雷達(dá)基數(shù)據(jù)進(jìn)行其他氣象產(chǎn)品開發(fā)的限制,大大增強(qiáng)了雷達(dá)基數(shù)據(jù)的可應(yīng)用性和可擴(kuò)展性。