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年的實踐使用證明該方法穩定、實用且操作簡便,保存和使用資料的成本降低,效率提高,可為基層臺站解決海量歷史資料備份問題提供借鑒。

主站蜘蛛池模板: 国产青青草视频| 黄色国产在线| 99国产精品国产| 91色综合综合热五月激情| 中文字幕欧美日韩| 原味小视频在线www国产| 国产微拍一区二区三区四区| 久久成人国产精品免费软件| 久青草网站| 国产高清自拍视频| 91视频精品| 亚洲国产欧美中日韩成人综合视频| 久久无码免费束人妻| 国产在线自揄拍揄视频网站| 欧美午夜一区| 日韩久草视频| 久久美女精品| 日韩AV无码免费一二三区| av无码一区二区三区在线| 无码免费的亚洲视频| 国产网站免费| 97视频在线观看免费视频| 日本在线亚洲| 九九视频免费看| 亚洲综合中文字幕国产精品欧美| 欧美日韩午夜| 欧美在线精品一区二区三区| 国产杨幂丝袜av在线播放| 亚洲国产成人在线| 国产尤物视频在线| 二级毛片免费观看全程| 999国内精品视频免费| 久久99蜜桃精品久久久久小说| 在线播放真实国产乱子伦| 色爽网免费视频| 1769国产精品免费视频| 亚洲中字无码AV电影在线观看| 欧美精品伊人久久| 国产欧美日韩精品第二区| 成人午夜视频网站| 欧美A级V片在线观看| 国产成人免费观看在线视频| 色哟哟精品无码网站在线播放视频| 国产一级无码不卡视频| 波多野结衣中文字幕一区| 国产网站黄| 亚洲三级视频在线观看| 婷婷亚洲最大| 黄色网址手机国内免费在线观看| 国内99精品激情视频精品| 国产一区二区网站| 亚洲激情99| 99久久精品国产自免费| 99热免费在线| 国产人妖视频一区在线观看| 国模私拍一区二区| 国产美女视频黄a视频全免费网站| 91美女视频在线观看| 天堂成人av| 99热这里只有精品国产99| 国产午夜看片| av天堂最新版在线| 国内精品小视频在线| 国产国产人在线成免费视频狼人色| 亚洲三级片在线看| 亚洲天堂.com| 一级毛片不卡片免费观看| 嫩草在线视频| 在线高清亚洲精品二区| 啪啪永久免费av| 久久精品人妻中文视频| 日韩精品资源| 91区国产福利在线观看午夜| 亚洲国产无码有码| 中文字幕1区2区| 伊人成人在线| 91区国产福利在线观看午夜| 在线观看热码亚洲av每日更新| 亚洲一区二区三区香蕉| 无码高潮喷水在线观看| 亚欧美国产综合| 一级做a爰片久久免费|