原 野,張耀文,李雄鳴,林 宏,胡國領(lǐng)
(1.32018 部隊,北京 100094;2.61741 部隊,北京 100094;3.31678 部隊,瀘州 646000;4.92830 部隊15 分隊,???571122)
結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)是氣象數(shù)據(jù)的兩種重要類型。就存儲非結(jié)構(gòu)化氣象數(shù)據(jù)而言,應(yīng)該把存儲方法以及存儲空間兩個方面的問題解決好。根據(jù)日期命名文件是非結(jié)構(gòu)化氣象數(shù)據(jù)的主要特征,利用腳本編程的批處理方式,我們根據(jù)日期自動將非結(jié)構(gòu)化氣象數(shù)據(jù)文件夾建立起來,分類處理定時完成。
通過以上論述得知,非機構(gòu)化與結(jié)構(gòu)化是氣象數(shù)據(jù)分析的兩種重要分析形勢。如果數(shù)據(jù)的存儲采用的是非結(jié)構(gòu)化方式,因此,存儲方法以及存儲空間就變成了兩個重要的存儲任務(wù)。在不斷發(fā)展了存儲技術(shù)后,對于存儲氣象數(shù)據(jù)的很多要求以及規(guī)定,存儲空間已經(jīng)能夠給予滿足。并且,現(xiàn)階段氣象工作人員已經(jīng)把非結(jié)構(gòu)化存儲氣象數(shù)據(jù)作為的重點工作。因為非結(jié)構(gòu)化氣象數(shù)據(jù)通常都是按照時間日期命名文件的,通過系統(tǒng)內(nèi)部工具,再對編程語言進行簡單的批處理,就能夠根據(jù)日期將文件夾自動建立起來,并且,在指定的位置存儲需要的數(shù)據(jù)。
一種簡化的腳本語言即為批處理,與Unit 內(nèi)的Shell 腳本類似,通過Windows 系統(tǒng)或者DOS 中嵌入的解釋運行或者命令解釋器,在Windoows 或者DOS 內(nèi)是經(jīng)常被應(yīng)用的,我們可以用cmd 或者bat 來拓展命名批處理腳的文件,簡單而言,批處理腳本是集中執(zhí)行了多個行的Dos 命令,其中,逐行書寫是此命令的主要特征,并且對外部程序進行調(diào)用,盡管實在命令執(zhí)行環(huán)境內(nèi)實現(xiàn)程序的運行,然而,命令行軟件并非唯一可用的,只要Windows 程序是32位的,都能夠與批處理文件結(jié)合應(yīng)用。
所謂計劃任務(wù)屬于窗口系統(tǒng)中一個程序工具,它主要發(fā)揮程序定時執(zhí)行的作用,通過“任務(wù)計劃”能夠在一些特定的時間安排程序、文檔以及腳本,然后讓其正常運行。
通常依據(jù)日期對非結(jié)構(gòu)化氣象數(shù)據(jù)進行命名,我們從micaps數(shù)據(jù)入手展開分析,并且,其開頭都是以年月日的方式展開,例如,2019年7月1日的數(shù)據(jù)就可以這樣表示:190701001.000。通過此種命名文件的方法,對于文件日期的判斷就可以發(fā)揮批處理編程的作用,根據(jù)自行定義的相關(guān)條件,向指定的位置存儲一定的日期文件,并且利用窗口系統(tǒng)的計劃任務(wù),執(zhí)行定時完成,從而達到實時分類存儲氣象數(shù)據(jù)的目的。
我們舉例說明,從而了解分類存儲的方法。
在指定位置保存上一天的全部數(shù)據(jù)是代碼的主要功能。其基本方法是:第一,當下日期的獲?。坏诙?,對某年某月某日天數(shù)距離進行換算;第三,把一天減去;第四,用日期將其換回;第五,按照日期把文件生成出來,數(shù)據(jù)拷貝,基本代碼為:
對規(guī)定天數(shù)前的日期進行計算—rem
@eco off
Enabledelayedexpansion setlocal
1=set DayAgo
假設(shè)用yyyy-mm-dd 設(shè)定成rem 的系統(tǒng)日期
%date:~0.4%=set yy
%date:~8.2%=set dd
%date:~5.2%=set mm
其中,距離是1970年1月1日的天數(shù)主要通過rem 進行轉(zhuǎn)換。
3.3.1 當前日期的獲取
通過@echo off 將DOS 界面回顯關(guān)閉,這樣在計算機界面就不會顯示程序的執(zhí)行情況。
用延遲拓展在本地數(shù)據(jù)庫內(nèi)設(shè)置出阿里,實際上即為延遲的變量?!把舆t環(huán)境變量擴展”是它的全稱,其目的是為識別后續(xù)代碼中的變量,在替換結(jié)束了允許變量后,在對命令執(zhí)行操作。
其中,目前的年月日賦值變量就可通過%date:~0.4%=set yy;%date:~8.2%=set dd;%date:~5.2%=set mm 表示。
3.3.2 天數(shù)換算
對于前一天的日期不能直接通過批處理腳本獲取,所以,為了得到這個日期,應(yīng)該展開計算分析。我們可以按照改編的Ritchie Lawrence 算法用1970年1月1日的天數(shù)將當前的日期換算出來。
其中,100%mm%%%100=mm;100%dd%%%=set/a dd.首先把月與日日期變量中的首位字符0去掉,然后把日期換算為相應(yīng)的天數(shù)。
其中,換算后的天數(shù)可以用CountDays 表示,其中,我們所應(yīng)用的set/a 就是令set 可以帶動數(shù)學(xué)符號完成相應(yīng)的數(shù)學(xué)計算。例如,加減等。
3.3.3 把需要的天數(shù)減去
%DayAgo%=set/a CountDays-把一天用計算好的天數(shù)減去,這樣對于當下日期距離1970年1月1日的天數(shù)就可以被得到。
運行快捷、簡單是批處理腳本的主要特征。算法兼容性好且靈活。在應(yīng)用期間,不用對開發(fā)軟件進行安裝以及運行,很多工作量不大的任務(wù)都可以用它來實現(xiàn)和完成。文章通過上文一對前一天氣象數(shù)據(jù)腳本的拷貝為例,完成分類定時的備份。稍微修改其中的代碼,定時刪除可以隨時展開,此外,拷貝工作可以按月份展開??偟膩碇v其具有很大的應(yīng)用優(yōu)勢,是目前采集和獲取氣象信息數(shù)據(jù)的有效方法。