拉薩氣象服務(wù)信息管理研究

時(shí)間:2022-01-08 09:01:02

導(dǎo)語(yǔ):拉薩氣象服務(wù)信息管理研究一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

拉薩氣象服務(wù)信息管理研究

1系統(tǒng)總體目標(biāo)及設(shè)計(jì)要求

氣象產(chǎn)品有公眾、決策、行業(yè)氣象服務(wù)產(chǎn)品三大類,相應(yīng)服務(wù)對(duì)象有媒體、政府、手機(jī)用戶、行業(yè)用戶等,系統(tǒng)的設(shè)計(jì)目標(biāo)總體上要實(shí)現(xiàn)各類服務(wù)產(chǎn)品的自動(dòng)生成、根據(jù)服務(wù)對(duì)象進(jìn)行產(chǎn)品的分類及服務(wù)對(duì)象有效管理等功能,此外還需建立產(chǎn)品、用戶、手機(jī)號(hào)段等數(shù)據(jù)庫(kù)。這就要求系統(tǒng)根據(jù)配置文件設(shè)定的參數(shù)能夠讀取和解碼源數(shù)據(jù),處理后的數(shù)據(jù)存放入數(shù)據(jù)庫(kù)中形成基礎(chǔ)數(shù)據(jù),根據(jù)不同用戶的需求生成各類服務(wù)產(chǎn)品,并且存入產(chǎn)品庫(kù)。前臺(tái)的系統(tǒng),根據(jù)產(chǎn)品庫(kù)中的內(nèi)容,結(jié)合提供的編輯功能進(jìn)行再加工并通過通信模塊實(shí)時(shí)。系統(tǒng)的工作流程圖1,系統(tǒng)結(jié)構(gòu)圖2可供參考。

2系統(tǒng)主要開發(fā)環(huán)境及結(jié)構(gòu)

本系統(tǒng)采用VisualStudio2005微軟的IDE環(huán)境,數(shù)據(jù)庫(kù)選用SQLServer2005,開發(fā)語(yǔ)言選用C#.net,系統(tǒng)采用C/S模式。整個(gè)系統(tǒng)主要由各類服務(wù)產(chǎn)品的合成、產(chǎn)品庫(kù)的管理、方式、用戶資源管理統(tǒng)管理員授權(quán)五大模塊組成,根據(jù)流程和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)出了系統(tǒng)主界面如圖3所示。各類服務(wù)產(chǎn)品的合成、產(chǎn)品庫(kù)的管理、方式、用戶資源管理統(tǒng)管理員授權(quán)五大模塊組成,根據(jù)流程和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)出了系統(tǒng)主界面。

3技術(shù)難點(diǎn)及解決方案方案

3.1類的建立建立了一個(gè)文件名為PbClass2.cs的類,其中聲明了一個(gè)公共類PbClass2,在該類中建立了幾個(gè)方法,以便在主程序中直接調(diào)用這些方法,通過緩存減少資源的使用率是提高工作效率的有效編程手段。但類建好后在程序中實(shí)例化該類,提示出錯(cuò)(錯(cuò)誤為命名空間并不直接包含諸如字段或方法之類的成員),經(jīng)過多次調(diào)試最后發(fā)現(xiàn)問題出在實(shí)例化對(duì)象的位置不能緊接在命名空間之后,而應(yīng)在聲明的其它類內(nèi)。3.2建立數(shù)據(jù)庫(kù)敏感字段時(shí),程序提示出錯(cuò)根據(jù)手機(jī)用戶所屬號(hào)段按地區(qū)歸類時(shí),提示在程序的cmd1.ExecuteNonQuery()處出現(xiàn)INSERTINTO語(yǔ)句的語(yǔ)法錯(cuò)誤,用戶號(hào)碼無法自動(dòng)入庫(kù)。解決方法:仔細(xì)檢查各字段,其中time該字段主要意義是用戶訂購(gòu)氣象信息的時(shí)間,修改數(shù)據(jù)庫(kù)uph⁃num表中字段time改為dztime后程序正常運(yùn)行。3.3如何將數(shù)組中重復(fù)數(shù)據(jù)刪除并保證數(shù)據(jù)唯一在進(jìn)行批量手機(jī)用戶入庫(kù)時(shí),存在用戶用大且可能重復(fù)的情況,如將冗余用戶入庫(kù),在合成氣象短信時(shí)則容易產(chǎn)生同一用戶發(fā)送多條同一氣象短信的情況,從而引起用戶投訴。解決方法:在編寫代碼時(shí)通過應(yīng)用Dictionary類,在PbClass2.cs方法集類中再定義一個(gè)RemoveDupli⁃cated(StreamReadersr)刪除冗余類的方法,將文本文件中的各行讀入數(shù)組,通過判斷有無重復(fù)數(shù)據(jù),有則將重復(fù)的用戶數(shù)據(jù)丟棄,保證數(shù)據(jù)唯一且存放入Dic⁃tionary類中,最后返回一個(gè)Dictionary類即可。但在調(diào)試中出現(xiàn)“截?cái)嘧址蚨M(jìn)制數(shù)據(jù)。語(yǔ)句已終止。”錯(cuò)誤,經(jīng)檢查發(fā)現(xiàn)原來是向數(shù)據(jù)庫(kù)中添加的變量類型有誤。原語(yǔ)句為cmd1.CommandText="insertintouphn(id,uphnum,ownerland,dztime)values(’"+n+"’,’"+v+"’,’拉薩’,’"+DateTime.Now.ToString()+"’)";此處的V變量類型為Dictionary,改為cmd1.Command⁃Text="insertintouphn(id,uphnum,ownerland,dztime)values(’"+n+"’,’"+v.Key.ToString()+"’,’拉薩’,’"+DateTime.Now.ToString()+"’)";后調(diào)試通過。3.4flash控件嵌入C#,提示錯(cuò)誤:未能導(dǎo)入ActiveX控件,請(qǐng)確保它已正確注冊(cè)解決方法:在VS環(huán)境中選擇工具欄,選擇工具箱項(xiàng),COM組件;然后選擇MicrosoftMultimediaControl,version6.0和ShockwaveFlashObject;最后在窗體上畫一個(gè)ShockwaveFlashObject控件,之后把MicrosoftMultimediaControl,version6.0去掉,再畫FLASH控件的時(shí)候就不會(huì)報(bào)這個(gè)錯(cuò)誤了。3.5實(shí)現(xiàn)C#與Flash的交互通信通過Flash設(shè)計(jì)的登錄動(dòng)畫界面如何與C#進(jìn)行交互是平臺(tái)開發(fā)中需要解決的一個(gè)重要問題,如果不能解決,設(shè)計(jì)中的亮點(diǎn)將無法體現(xiàn)。解決方法:選擇工具箱上的Flash控件,放到窗體上并調(diào)整好大小在Form_Load()中加入如下代碼。axShockwaveFlash1.Movie=@"D:\menu.swf";axShockwaveFlash1.Menu=false;axShockwaveFlash1.Playing=true;并在flash原文件的“進(jìn)入”按鈕所放層第一幀上添加如下動(dòng)作:on(release){fscommand("SendAc⁃tion");},生成SWF文件。在VS環(huán)境下的FLASH控件找到的FSCommand事件,選擇該控件雙擊添加如下代碼:PrivatevoidaxShockwaveFlash1_FSCommand(ob⁃jectsender,AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvente){if(e.command=="SendAction"){this.Clost();}3.6用戶數(shù)據(jù)庫(kù)管理設(shè)計(jì)運(yùn)行時(shí),提醒主鍵不唯一,無法更改id的問題運(yùn)行設(shè)計(jì)軟件并刪除一個(gè)用戶時(shí),將其后的id應(yīng)改為原id-1,但是運(yùn)行出錯(cuò)將數(shù)據(jù)庫(kù)中id的主鍵去掉,能更改id,但是瀏覽數(shù)據(jù)庫(kù)的內(nèi)容時(shí)id不是按順序顯示,且刪除一條記錄有時(shí)會(huì)同時(shí)出現(xiàn)兩個(gè)相同的id,最后又在數(shù)據(jù)庫(kù)中將id設(shè)為主鍵后,仔細(xì)檢查程序發(fā)現(xiàn)一條語(yǔ)句有問題,以下標(biāo)注為紅色,程序見下。for(intj=0;j<n;j++){com52.CommandText="updateuphnsetid=’"+arr[j]+"’whereid>’"+mainkey+"’";com52.Connection=con53;com52.ExecuteNonQuery();}錯(cuò)誤改為com52.CommandText="updateuphnsetid=’"+arr[j]+"’whereid=’"+(mainkey+j+1)+"’";即可,程序運(yùn)行正常,id號(hào)能正常排序。3.7C#中讀寫包含漢字的txt文本文件時(shí)出現(xiàn)亂碼的問題解決方法:當(dāng)我們用System.IO.StreamReader讀取包含漢字的txt文件時(shí),經(jīng)常會(huì)讀出亂碼,StreamWrit⁃er寫文本文件也有類似的問題。主要原因是文件的編碼(encoding)和StreamReader/Writer的encoding不對(duì)應(yīng)造成。StreamReader的默認(rèn)編碼為UTF-8,而不是當(dāng)前系統(tǒng)的ANSI代碼,因此讀取簡(jiǎn)體中文會(huì)出現(xiàn)亂碼,可以通過指定編碼正確顯示GB2312簡(jiǎn)體中文。代碼如下:StreamReaderstrmopen=newStreamReader(@"c:\yb.txt",System.Text.Encoding.Default);stringstrOpen=strmopen.ReadToEnd();strmopen.Close();將程序中的第一條語(yǔ)句System.Text.Encoding.Default換成System.Text.Encoding.Ge⁃tEncoding("gb2312"),即可同樣用StreamWriter保存txt文件時(shí)也是類似。3.8如何實(shí)現(xiàn)Flash動(dòng)畫(啟動(dòng))界面點(diǎn)擊后進(jìn)入平臺(tái)主界面并關(guān)閉Flash登錄界面的問題解決方法:在你的程序目錄下打開這個(gè)文件Pro⁃gram.cs。更改如下代碼:Formfmfm=newFormfm();Application.Run(fm);Formmainmain=newFormmain();Application.Run(main);Formfm其實(shí)是一個(gè)含有flash控件的窗體,在課題開發(fā)中作為程序啟動(dòng)時(shí)的一個(gè)flash界面,點(diǎn)擊該flash的按鍵后才真正進(jìn)入到主程序界面。就是你關(guān)閉了第一個(gè)父窗體,又要打開的另一個(gè)窗體。在此就是Formmain窗體,在第一個(gè)父窗體(Formfm)的響應(yīng)事件中加上this.close()即可。這里要注意的是當(dāng)用戶點(diǎn)擊進(jìn)入到平臺(tái)主界面時(shí)要發(fā)生兩個(gè)事件,第一響應(yīng)flash與c#的交互,即進(jìn)入平臺(tái)主界面;第二要關(guān)閉flash啟動(dòng)界面。

4部分功能模塊的實(shí)現(xiàn)方法

4.1數(shù)據(jù)庫(kù)管理功能的實(shí)現(xiàn)。系統(tǒng)數(shù)據(jù)庫(kù)分別為基礎(chǔ)數(shù)據(jù)庫(kù)、產(chǎn)品庫(kù)、用戶資源庫(kù)、字段庫(kù)。基礎(chǔ)數(shù)據(jù)庫(kù)是存儲(chǔ)解碼后報(bào)文的基礎(chǔ)氣象數(shù)據(jù)。如24小時(shí)預(yù)報(bào)、48小時(shí)預(yù)報(bào)、72小時(shí)預(yù)報(bào)等。產(chǎn)品庫(kù)是存儲(chǔ)各類已處理好的數(shù)據(jù)產(chǎn)品,以便根據(jù)業(yè)務(wù)所需實(shí)時(shí)提取。用戶資源庫(kù)按用戶需求的不同,主要為氣象短信用戶、決策服務(wù)群兩大類,系統(tǒng)要實(shí)現(xiàn)用戶資源庫(kù)的建設(shè)和管理等功能。系統(tǒng)可以對(duì)不同的服務(wù)對(duì)象進(jìn)行管理,如氣象短信用戶、決策服務(wù)層用戶、投訴用戶等進(jìn)行數(shù)據(jù)庫(kù)管理,實(shí)現(xiàn)批量入庫(kù)、刪除、修改等功能。4.2產(chǎn)品生成與方法部分氣象產(chǎn)品如公眾預(yù)報(bào)產(chǎn)品、氣象短信產(chǎn)品在后臺(tái)通過監(jiān)控報(bào)文時(shí)間,當(dāng)?shù)侥骋粫r(shí)間時(shí)啟動(dòng)解報(bào)軟件翻譯放入產(chǎn)品庫(kù),便于業(yè)務(wù)人員實(shí)時(shí)提取。而決策氣象服務(wù)產(chǎn)品如天氣公告、重要?dú)庀笮畔⒌龋到y(tǒng)則提供便捷的編輯界面,進(jìn)行統(tǒng)一管理,避免了往日混亂管理情況的發(fā)生。氣象短信可以通過ftp技術(shù)實(shí)現(xiàn)上傳至服務(wù)器;決策氣象服務(wù)產(chǎn)品可以通過郵件或通過通信模塊以短信方式發(fā)送等。如圖3的功能實(shí)現(xiàn)方法就是利用MailMessage類完成郵件內(nèi)容的設(shè)置,然后通過SmtpMail類完成郵件的發(fā)送功能,信息技術(shù)但是要實(shí)現(xiàn)郵件的群發(fā)及附件發(fā)送功能,則需要使用Attachments類。

5結(jié)語(yǔ)

通過開發(fā)主要功能模塊,系統(tǒng)已初具雛形,但仍有許多其它功能需要繼續(xù)研究完善,充分利用各類技術(shù)手段進(jìn)行快速分發(fā);實(shí)現(xiàn)各類天氣預(yù)報(bào)產(chǎn)品自動(dòng)化和半自動(dòng)處理,并提供種文字、圖片、聲音、視頻等產(chǎn)品素材,不斷完善系統(tǒng)功能,以滿足了各行業(yè)不同的需求。因此在今后的軟件功能完善過程中,同樣會(huì)遇到許多問題和新知識(shí),這就需要我們不斷去學(xué)習(xí),同其他知識(shí)和技能的學(xué)習(xí)一樣,掌握正確的學(xué)習(xí)方法對(duì)提高編程技術(shù)的學(xué)習(xí)效率和質(zhì)量起著十分重要的作用,做好實(shí)踐筆記,將平時(shí)所遇到的問題、失誤和學(xué)習(xí)要點(diǎn)記錄下來,這種積累的過程就是水平不斷提高的過程。總之,理論指導(dǎo)實(shí)踐,而實(shí)踐豐富了理論。理論聯(lián)系實(shí)踐才是編程技術(shù)學(xué)習(xí)的指導(dǎo)思想。

參考文獻(xiàn)

[1]劉旭林,趙文芳,劉國(guó)宏.基于WebGIS的氣象信息顯示和查詢系統(tǒng)[N].應(yīng)用氣象學(xué)報(bào),2008,19(1):116-122.

[2]賈玲,劉芳.人工影響天氣綜合管理信息系統(tǒng)應(yīng)用技巧[J].陜西氣象,2007(5):53-56.

[3]柳錦寶,何政偉,王增武,等.四川省氣象服務(wù)信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].氣象科技,2010,38(4):484-487.

[4]郭慶利,閆麗鳳,薛波,等.氣象短信業(yè)務(wù)系統(tǒng)開發(fā)與應(yīng)用[J].安徽農(nóng)業(yè)科學(xué),2008,36(12):5233-5234.

[5]于庚康.淺談江蘇氣象信息平臺(tái)建設(shè)[J].氣象軟科學(xué)同,2009(3):109-111.

[6]張京紅,李天富,黃秋如,等.海南省應(yīng)用氣象信息服務(wù)系統(tǒng)的設(shè)計(jì)與開發(fā)[J].廣西氣象,2005,26(A01):67-69.

作者:普布 德吉央宗 張瓊 次珍 衛(wèi)東 單位:西藏拉薩市氣象局