拉薩氣象服務信息管理研究

時間:2022-01-08 09:01:02

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

拉薩氣象服務信息管理研究

1系統(tǒng)總體目標及設計要求

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

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

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

3技術難點及解決方案方案

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

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

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

5結語

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

參考文獻

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

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

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

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

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

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

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