999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種保存Micaps數據資料的思路和方法

2020-11-23 06:10:26李細生
中低緯山地氣象 2020年5期

張 華,李細生

(湖南省株洲市氣象局,湖南 株洲 412003)

0 引言

Micaps4[1]是目前我國大部分氣象臺站制作天氣預報的操作平臺,功能眾多,需海量的數據資料支持,國家氣象局將這些數據以不同格式(大部分是文本格式)下發,優點是便于直接讀取和訪問,缺點是空間占用非常大,每天大約有100 G,且訪問效率較低。現在各個省局都建有分布式數據中心,市、縣兩級再無需維護數據服務器,訪問速度和效率較以前大幅度提升,但仍然沒有解決基層臺站歷史資料的長期不間斷保存問題,這些海量的歷史數據其實也是氣象部門的寶貴資源和財富,白白流失實在浪費。基于此,可設計一個資料存儲程序,通過一些必要的刪減和壓縮手段,將每天的資料打包到一個數據文件,既大大節約存儲空間,又便于資料的交流和使用以及日后的分析應用,從而打好氣象部門的“大數據”[2]這張牌。

1 壓縮數據文件的主要思路

為了達到數據文件大幅度瘦身的目標,保存資料時必須有相應的刪減和壓縮技巧,可通過如下幾種方式縮減容量:

1.1 縮小資料覆蓋范圍

Micaps資料一般有全球范圍,東亞范圍等,基層臺站如果研究的區域不需要那么大,則可將范圍適當縮小。如中央臺下發的EC細網格資料范圍是73°~135°E、18°~54°N,總共有497×289=143 633個網格點,網格距是0.125個經緯度。假如研究目標區域僅僅為江南、華南等地,那么可以將經緯度范圍裁取為:100°~130°E、20°~40°N,如此一來,網格點變為161×161=25 921個,數據量變為原來的1/6。

1.2 刪除不常用的要素或產品

Micaps資料里占用空間較大的有衛星數據產品、雷達產品、數值模式產品等,如果去除這些,或者只選擇少數幾個精品進行保持,也可減少一半以上存儲容量。

1.3 將文本格式的數據改寫成二進制格式

Micaps后臺使用的數據很多為文本格式,它是一種典型的順序文件,其文件的邏輯結構又屬于流式文件。可以在Unix、Macintosh、Microsoft Windows、DOS和其它操作系統之間自由交互,文本文件編碼基于字符定長,譯碼容易但占用空間較大;二進制文件編碼是變長的,所以它靈活,存儲利用率高,占用空間較小。因此,可以利用二進制文件占用空間小的優點,通過程序將文本文件中的數據按一定的順序寫入二進制DAT文件,從而縮減容量。當然,二進制文件也有可讀性差的缺點,所以數據保存好以后一定要用專門的說明文件對數據的格式和順序進行單獨說明,并與數據文件存放在同一路徑下。

2 寫入二進制文件的源碼和注意事項

下面以ECMWF_THIN某個時次的低溫預報數據為例來說明改寫程序的編寫。編程語言為VB.NET,源程序用Microsoft Visual Studio 2010編譯[3]通過,代碼的功能是將某一時間點EC細網格2 m最低氣溫預報(間隔6 h、共38個預報時次)通過范圍裁取后寫入二進制DAT文件,設計思路是將原文本數據文件去除文件頭,選取適當范圍數據再改變順序寫入二進制文件*.dat。源代碼如下:

Public Function DuECTmn(ByVal Parth As String)

Dim Jd(2), Jdt(2) As Single '原經度范圍,細網格73

Dim Wd(2), Wdt(2) As Single '原緯度范圍,細網格18

Dim T1(17), Tm1(38) As Integer

Dim T2(17), Tm2(38) As String

Dim myFileTmn As New IO.FileStream("d: fxtdat” °ComboBox4.Text ° "Tmn6.dat", FileMode.Create, FileAccess.Write)’創建新的二進制文件。

Dim bwTmn As New BinaryWriter(myFileTmn, System.Text.Encoding.UTF32) ’ 定義二進制文件的數據壓縮格式為UTF32。

For K = 1 To 38 '按順序循環讀取低溫文件38個(6h間隔)

txtFmn6 = TxtTmn6 °ComboBox4.Text °Tm2(K)'EC6 h低溫全路徑文件名。

If My.Computer.FileSystem.FileExists(txtFmn6) = False Then‘如果原始資料缺失則提示并退出。

MsgBox(txtFmn6 °"文件缺失!")

bwTmn.Flush()

bwTmn.Close()

myFileTmn.Close()

Exit Function

End If

Dim strRead As String() = IO.File.ReadAllLines(txtFmn6)

Dim Temp(strRead.Length - 1)() As String

For i = 0 To strRead.Length - 1

strRead(i) = Trim(strRead(i))

Do While InStr(strRead(i), " ") '如果有連續的兩個空格就替換成一個空格,用循環方式去除文本文件中多余的空格。

strRead(i) = Replace(strRead(i), " ", " ")

Loop

If i<6 Then

Temp(i) = strRead(i).Split(" ")’用回車符分割數據

Else

Temp(i) = strRead(i).Split(" ")’用空格分割數據

End If

Next

Jd={107, 117} '縮小經度范圍

Wd={23, 31} '縮小緯度范圍

Dim Ds(Int((Wd(1)-Wd(0))/0.125), Int((Jd(1)-Jd(0))/0.125)) As Single

x=0

For i=0 To Int((Wd(1)-Wd(0))/0.125)-1

For j=0 To Int((Jd(1)-Jd(0))/0.125)-1

Ds(i, j)=Temp(2*(54-Wd(0))/0.125-2*i+6)((Jd(0)-73)/0.125+j)’將文本文件數據讀入數組,并改變順序寫入二進制文件,+6是為了去除文本文件的前6行(文件頭)。

Gf=Val(Ds(i, j))

bwTmn.Write(Gf) ’寫入二進制文件

x=x+1

Next

Next

Next

bwTmn.Flush()

bwTmn.Close()

myFileTmn.Close()

End Function

上述子程序將讀取數據范圍設置成107°~117°E、23°~31°N ,網格點變為101×81=8 181個,6 h一次、38個預報時次的文件(TXT格式)本來總共占33 M空間,改寫成一個二進制dat數據文件后縮小為680 K,約為原來的1/50,文件大幅度變小,訪問效率提升。

這里需要注意兩個問題:一是寫DAT文件時的編碼格式,“System.Text.Encoding.UTF32”必須是UTF32編碼,其它編碼格式用GRADS軟件讀取時為錯誤數據;二是寫數據的順序,Micaps的數據順序是從高緯度到低緯度,寫數據時必須改成從低緯度到高緯度。

Micaps的文本數據一般是一個文件保存二個維度數據,寫成二進制文件時可以根據需要將一天的所有資料保存到一個文件里,那么就有5個維度(空間三維,時間一維,要素一維)的數據,如此處理之后,每天100 G的原始數據除去不常用的,全部寫入一個dat,大小變為100~500 M,壓縮比例為200~1 000倍,保存幾年的數據毫無壓力。

3 二進制數據文件的訪問和使用

通過前面方法處理保存的數據文件的說明文件通常在同路徑下可以找到,如果這些數據需要在Micaps里使用,用簡單的少數幾行代碼恢復成一個個文本格式文件,再加上相應的文件頭即可。

如需要用GRADS等繪圖軟件查看數據,則另寫數據描述文件。前文EC低溫預報的數據描述文件如下:

dset d: fxtdat19091008Tmn6.dat

TITLE EC dw

UNDEF -9.99E+33

options little_endian

XDEF 80 LINEAR 107 0.125

YDEF 64 LINEAR 23 0.125

ZDEF 1 LEVELS 999

TDEF 38 LINEAR 08Z10Sep2019 6hr

vars 1

dw 0 99 dw

ENDVARS

4 備份程序的業務使用情況

株洲市氣象臺是湖南省的地區級臺站,備份數據需要從湖南省氣象局數據服務器遠程拷貝下載,每天的數據量很大,如果是直接下載再保存于本地,受限于網絡帶寬和硬盤容量,基本無法實現,用前文所述方法加以處理后,如果只選取常規地面、高空資料,EC-Thin資料等,一天的數據壓縮后大約只有500 M,這樣一來,1TB的硬盤可以輕松保存5 a以上資料。基于此思路,我們用VB.NET編寫了可執行程序,該程序的主要功能是定時備份遠程服務器上的M4后臺數據,定時功能由WIN系統的計劃任務實現,將該程序放入系統計劃任務欄每日02—03時自行啟動(如圖1),備份完畢后自動退出。

圖1 WIN7系統計劃任務中的M4資料備份程序Fig.1 M4 data backup program in win7 system planning task

具體需要備份哪些資料由設置文件設置(如圖2),該設置文件列舉需要備份的資料及其目錄地址,備份主程序啟動后搜索該目錄下一天之內的所有新文件并逐一寫入DAT文件,圖2所示的設置文件備份高空、地面和EC細網格資料,日儲存數據量大約為原數據量的25%,占用空間150 M,一般1 h內即可完成備份。通過最近2 a的實踐運行,此程序穩定可靠,操作簡單,設置好參數文件后無需人工干預即可每日定時完成資料備份工作。

圖2 備份程序的設置文件Fig.2 The setup file of backup program

5 結語

資料備份工作非常重要,前文所述的思路和方法可以概括為:刪除不常用數據,保留必需的核心數據,并用二進制編碼進一步壓縮數據文件容量,后期數據使用可借助GRADS軟件或者恢復成M4文本文件。2年的實踐使用證明該方法穩定、實用且操作簡便,保存和使用資料的成本降低,效率提高,可為基層臺站解決海量歷史資料備份問題提供借鑒。

主站蜘蛛池模板: 欧美高清三区| 亚洲欧美综合在线观看| 婷婷五月在线视频| 婷婷亚洲最大| 国产精选小视频在线观看| 成人在线第一页| 久久久受www免费人成| 婷婷综合缴情亚洲五月伊| 人妻无码AⅤ中文字| 亚洲国产成人精品青青草原| 大乳丰满人妻中文字幕日本| 国产成人AV男人的天堂| 亚洲欧洲日韩综合色天使| 尤物成AV人片在线观看| 日韩精品无码免费一区二区三区 | 日韩123欧美字幕| 久草视频中文| 亚洲国产精品人久久电影| 美女无遮挡免费网站| 久久精品电影| 亚洲精品国偷自产在线91正片| 欧美日韩精品一区二区视频| 亚洲一级毛片在线观播放| 中文纯内无码H| 亚洲成综合人影院在院播放| 91精品国产麻豆国产自产在线| 欧美日韩专区| 欧美亚洲欧美| 在线观看欧美精品二区| 国产在线98福利播放视频免费| 久爱午夜精品免费视频| 亚洲性视频网站| 国产精品亚洲一区二区三区z | 国产精品视频公开费视频| 国产裸舞福利在线视频合集| 玖玖精品视频在线观看| 在线播放国产99re| 国产国产人成免费视频77777| 成人va亚洲va欧美天堂| 欧美亚洲一区二区三区导航 | 国产区福利小视频在线观看尤物| 毛片网站在线播放| 狠狠v日韩v欧美v| 日韩精品久久无码中文字幕色欲| 国产男女XX00免费观看| 亚洲欧美日韩成人高清在线一区| yjizz视频最新网站在线| 午夜精品久久久久久久99热下载| 精品剧情v国产在线观看| 国产一区二区丝袜高跟鞋| 国产自产视频一区二区三区| 香蕉久人久人青草青草| 欧美精品三级在线| 久久精品国产国语对白| 成年A级毛片| 国产福利免费观看| 国产乱子伦手机在线| 拍国产真实乱人偷精品| 国产精品成人免费视频99| 538国产在线| 欧美在线视频不卡| 欧美日韩国产在线播放| 嫩草国产在线| 亚洲精品福利网站| 亚洲精品人成网线在线| 日日噜噜夜夜狠狠视频| 国产97公开成人免费视频| 狠狠干综合| 国产在线高清一级毛片| 国产精品黄色片| 被公侵犯人妻少妇一区二区三区| 欧美亚洲国产精品久久蜜芽| 一级毛片免费不卡在线视频| 青青草原国产精品啪啪视频| 巨熟乳波霸若妻中文观看免费 | 在线视频一区二区三区不卡| 亚洲午夜片| 亚洲成综合人影院在院播放| 亚洲一区二区三区在线视频| 国产自视频| 国产欧美日韩91| 亚洲人成网站18禁动漫无码|