正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用_第1頁(yè)
正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用_第2頁(yè)
正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用_第3頁(yè)
正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用_第4頁(yè)
正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    正則表達(dá)式在地面氣象觀(guān)測(cè)數(shù)據(jù)文件處理中的應(yīng)用    劉衛(wèi)華+李永超+孫悅程摘要 由于各方面的原因,地面氣象觀(guān)測(cè)數(shù)據(jù)文件已經(jīng)不能滿(mǎn)足日益增長(zhǎng)的氣象數(shù)據(jù)分析應(yīng)用的需要,不能有效地發(fā)揮地面氣象的重要作用。將文本文件存儲(chǔ)的地面氣象觀(guān)測(cè)數(shù)據(jù)文件解碼存儲(chǔ)至數(shù)據(jù)庫(kù)中,建立了大連市地面氣象觀(guān)測(cè)資料數(shù)據(jù)庫(kù)。其中,正則表達(dá)式的應(yīng)用使地面氣象觀(guān)測(cè)數(shù)據(jù)文件的處理過(guò)程大大簡(jiǎn)化,效率提高。關(guān)鍵詞 地面氣象觀(guān)測(cè)數(shù)據(jù);數(shù)據(jù)庫(kù);正則表達(dá)式p416.2 a 1007-5739(2016)16-0190-02abstract due to various reasons,the gr

2、ound meteorological observation data file has been unable to meet the growing application of meteorological data analysis needs,and it cant effectively play an important role in the meteorological observation.the ground meteorological observation data stored in the text file was decoded and stored t

3、o the database,and the data base of the ground meteorological observation data of dalian city was established.among them,the application of regular expression maked the processing process of the ground meteorological observation data file greatly simplified,and the efficiency was improved.key words

4、ground meteorological observation data;data base;regular expression地面氣象觀(guān)測(cè)數(shù)據(jù)文件(包括a、a0、a1、a6和a7文件,以下簡(jiǎn)稱(chēng)a文件)作為中國(guó)氣象局規(guī)定的通用氣象觀(guān)測(cè)數(shù)據(jù)格式,通過(guò)地面氣象測(cè)報(bào)業(yè)務(wù)軟件進(jìn)行制作、維護(hù)和審核,每個(gè)測(cè)站每月生成一個(gè)純文本文件1-2。如直接使用,存在不能統(tǒng)計(jì)任意時(shí)段的統(tǒng)計(jì)值,更不能統(tǒng)計(jì)跨時(shí)段、跨區(qū)域的氣象數(shù)據(jù)資料等缺點(diǎn),不能滿(mǎn)足氣象數(shù)據(jù)整理分析統(tǒng)計(jì)的需求,無(wú)法有效地發(fā)揮氣象觀(guān)測(cè)資料的作用。因此,為了實(shí)現(xiàn)跨時(shí)段、跨區(qū)域a文件觀(guān)測(cè)資料的查詢(xún)統(tǒng)計(jì)以及在此基礎(chǔ)上的復(fù)雜應(yīng)用,建立了大連市a文件觀(guān)測(cè)資料數(shù)據(jù)

5、庫(kù),使用基于framework 4的c#語(yǔ)言實(shí)現(xiàn)了將全市各個(gè)臺(tái)站的a文件全部解碼讀入oracle數(shù)據(jù)庫(kù)。1 地面氣象觀(guān)測(cè)數(shù)據(jù)最新的2003年版地面氣象觀(guān)測(cè)規(guī)范是在1979年頒布的地面氣象觀(guān)測(cè)規(guī)范基礎(chǔ)上根據(jù)服務(wù)需求和技術(shù)發(fā)展擴(kuò)充了部分觀(guān)測(cè)要素的測(cè)量范圍,摒棄了過(guò)時(shí)不用的部分觀(guān)測(cè)項(xiàng)目和內(nèi)容重新規(guī)定了氣象數(shù)據(jù)存儲(chǔ)格式。但為兼顧歷史資料,2003年版的觀(guān)測(cè)規(guī)范兼容了1979年版的觀(guān)測(cè)記錄規(guī)范。但由于其設(shè)計(jì)初衷?xún)H為地面觀(guān)測(cè)規(guī)范使用,存在以下問(wèn)題:一是存儲(chǔ)方式為文本方式,體積小,便于存儲(chǔ)和保存,但讀取困難,在氣象預(yù)報(bào)服務(wù)及科學(xué)研究中不能快速查詢(xún)與分析,也不能對(duì)各種氣象要素進(jìn)行有效的組合,是一種單一的獨(dú)立的

6、存儲(chǔ)方式。二是各要素的指示碼因觀(guān)測(cè)次數(shù)不同、觀(guān)測(cè)時(shí)段不同和歷史沿革的不同而有較大差別,要素指示碼種類(lèi)繁多,增加了氣象資料的讀取難度。三是因?yàn)楦鞣N原因?qū)е職庀笠赜^(guān)測(cè)值缺測(cè)、異常、單位不一致等特殊情況的存在,增加了地面氣象觀(guān)測(cè)數(shù)據(jù)的處理難度。地面氣象觀(guān)測(cè)數(shù)據(jù)a文件由臺(tái)站參數(shù)、觀(guān)測(cè)數(shù)據(jù)、質(zhì)量控制、附加信息構(gòu)成,其中觀(guān)測(cè)數(shù)據(jù)包括排列順序固定的20個(gè)氣象要素,分別是氣壓(p)、氣溫(t)、濕球溫度(i)、水汽壓(e)、相對(duì)濕度(u)、云量(n)、云高(h)、云狀(c)、能見(jiàn)度(v)、降水量(r)、天氣現(xiàn)象(w)、蒸發(fā)量(l)、積雪(z)、電線(xiàn)積冰(g)、風(fēng)(f)、淺層地溫(d)、深層地溫(k)、凍土深

7、度(a)、日照時(shí)數(shù)(s)和草面溫度(b)。每個(gè)氣象要素為文件體中一組獨(dú)立的數(shù)據(jù)單位,由指示碼、方式位及該要素1個(gè)月的原始數(shù)據(jù)組成。根據(jù)氣象站的分類(lèi)不同及季節(jié)不同a文件內(nèi)的觀(guān)測(cè)數(shù)據(jù)也不同3。其結(jié)構(gòu)如圖1所示,采用自上而下的順序存儲(chǔ)方式,文件中各指示碼對(duì)應(yīng)的氣象數(shù)據(jù)區(qū)塊間相對(duì)獨(dú)立。本文處理的文件包括經(jīng)過(guò)人工審核的大連市轄區(qū)各臺(tái)站自建站以來(lái)至2015年末的所有a文件。2 a文件解碼入庫(kù)2.1 數(shù)據(jù)庫(kù)存儲(chǔ)a文件雖具有嚴(yán)格的數(shù)據(jù)存儲(chǔ)編碼格式,但同時(shí)也存在讀取困難、通用性差、統(tǒng)計(jì)分析不便及無(wú)法網(wǎng)絡(luò)應(yīng)用等缺點(diǎn),為此本文將a文件解碼入庫(kù)至oracle數(shù)據(jù)庫(kù)存儲(chǔ)。oracle數(shù)據(jù)庫(kù)作為一種成熟關(guān)系型數(shù)據(jù)庫(kù),在存

8、儲(chǔ)地面氣象觀(guān)測(cè)數(shù)據(jù)時(shí),具有提取簡(jiǎn)單、分析統(tǒng)計(jì)方便等優(yōu)勢(shì)。2.2 文件解碼流程考慮到a文件觀(guān)測(cè)數(shù)據(jù)地面要素種類(lèi)多,編碼規(guī)則繁雜,若想一次性將所有要素解碼入庫(kù)則較困難。本文解碼入庫(kù)思路為化繁為簡(jiǎn),即分別按照20個(gè)氣象要素標(biāo)識(shí)逐個(gè)遍歷所有a文件,從中提取出對(duì)應(yīng)氣象要素文本段,再將該氣象要素解碼入庫(kù)。以氣壓(p)要素為例,解碼流程如圖2所示。3 正則表達(dá)式的應(yīng)用3.1 正則表達(dá)式的定義正則表達(dá)式(regular expression)是計(jì)算機(jī)科學(xué)中的一個(gè)概念,是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一

9、種過(guò)濾邏輯4-6。可以通過(guò)正則表達(dá)式檢查給定的字符串是否與其匹配,也可通過(guò)正則表達(dá)式從字符串中獲取想要的特定部分。正是由于正則表達(dá)式字符處理能力強(qiáng)大、高效靈活、適應(yīng)性強(qiáng),廣泛用于字符串的校驗(yàn)、替換和提取。 3.2 正則表達(dá)式的應(yīng)用a文件是一種文件類(lèi)型、要素方式位和編碼方式繁雜多樣的純文本文件,如使用傳統(tǒng)的文本讀寫(xiě)方式往往需要逐行讀入,再按照不同規(guī)則進(jìn)行數(shù)據(jù)文本的合并和分離,其中可能需要進(jìn)行多次讀寫(xiě)處理,效率較低且容易出錯(cuò)。在 .net中使用正則表達(dá)式支持,需要引入system.text.regularexpressions命名空間,主要函數(shù)有以下幾個(gè): regex.ismatch()方法,返回

10、一個(gè)bool值,如果有匹配項(xiàng),返回true,否則返回false。regex.replace()方法,使用制定的替換字符串替換與制定正則表達(dá)式匹配的所有字符串。regex.match()方法,在輸入字符串中搜索匹配正則表達(dá)式模式的子字符串,并將第一個(gè)匹配項(xiàng)作為單個(gè)匹配對(duì)象返回。regex.split()方法,在由正則表達(dá)式模式定義的位置將輸入字符串拆分為一個(gè)子字符串?dāng)?shù)組。本文構(gòu)造了多個(gè)正則表達(dá)式(c#語(yǔ)言實(shí)現(xiàn))實(shí)現(xiàn)了一系列字符串操作,提高了處理效率。(1)為了整理要素文本段格式,方便下一步的分割字符串,需要替換1個(gè)或多個(gè)連續(xù)空格為1個(gè),使用正則表達(dá)式:regex.replace(input,&q

11、uot;s+"," ");(2)從整個(gè)a文件里快速截取氣壓(p)要素文本段便于下一步處理,不采用逐行讀入遍歷的方式,使用正則表達(dá)式:regex.match(input,"pss*?="regex options.mul-tiline);此表達(dá)式以多行模式匹配以字符p開(kāi)始,中間有任意多個(gè)字符(包括換行符),并以等號(hào)結(jié)束的文本段。此外對(duì)于有以d=代表整月缺測(cè),以及d0、d7、d9三種指示碼指示的淺層地溫(d)要素一次性匹配所有可能性使用:regex.match(input,"d(=|0ss*?=|7ss*?=|9ss*?=)",

12、regexoptions.multiline);(3)a文件每天的數(shù)據(jù)以"."結(jié)尾,為了合并一天的數(shù)據(jù)到一行內(nèi),使用正則表達(dá)式替換不以.結(jié)尾的換行符為空格:regex.replace(input,"(.)(rn)","$1 ");(4)文本段逐行(一行代表一天數(shù)據(jù))以單個(gè)空格為分隔符分割獲得每小時(shí)氣壓值并判斷其是否為正常值:stringinputstr = regex.split(result," ");/分割逐小時(shí)氣壓值for(int n = 0;n < inputstr.length;n+)if(rege

13、x.ismatch(inputstrn,"d4$")/氣壓值匹配四位數(shù)字,為正常值else/氣壓值不匹配四位數(shù)字,為缺測(cè)等非正常值(5)對(duì)于截取到的氣象要素?cái)?shù)據(jù),判斷該字符串是否為整數(shù),以方便下一步進(jìn)行轉(zhuǎn)換并存入數(shù)據(jù)庫(kù)可使用:regex.ismatch(input,"-?d+$");/判斷該字符串是否為整數(shù)(包括負(fù)整數(shù))。4 結(jié)語(yǔ)大連市地面氣象觀(guān)測(cè)資料數(shù)據(jù)庫(kù)的建立,完成了各臺(tái)站建站以來(lái)地面氣象觀(guān)測(cè)數(shù)據(jù)的數(shù)據(jù)庫(kù)存儲(chǔ),為氣象觀(guān)測(cè)資料的二次開(kāi)發(fā)應(yīng)用奠定了基礎(chǔ)。而正則表達(dá)式在氣象觀(guān)測(cè)資料文件處理中的使用,使得字符串處理時(shí)節(jié)約大量編程的時(shí)間,極大提高工作效率,同時(shí)

14、也能使所編寫(xiě)出來(lái)的程序代碼更簡(jiǎn)潔,可維護(hù)性更強(qiáng),解碼入庫(kù)的錯(cuò)誤率降低。5 參考文獻(xiàn)1 管杰裕.正則表達(dá)式在氣象信息處理中的應(yīng)用j.廣西氣象,2006,27(增刊1):107-108.2 田蘭金,石聲,李波,等.基于xml和正則表達(dá)式的氣象數(shù)據(jù)處理系統(tǒng)j.計(jì)算機(jī)科學(xué),2013,40(11a):432-434.3 郜慶林,馬琰鋼,吳孟春,等.浙江省地面氣象觀(guān)測(cè)數(shù)據(jù)a文件資料解讀入庫(kù)方案j.浙江氣象,2009,30(增刊1):48-50.4 潘存良.基于php的正則表達(dá)式在氣象信息處理中的應(yīng)用j.沙漠與綠洲氣象,2015,9(增刊1):129-130.5 李耀東.呼倫貝爾氣象資料a0文件的數(shù)據(jù)庫(kù)存儲(chǔ)實(shí)現(xiàn)d.成都

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論