拉薩氣象服務信息管理研究
時間:2022-01-08 09:01:02
導語:拉薩氣象服務信息管理研究一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
1系統總體目標及設計要求
氣象產品有公眾、決策、行業氣象服務產品三大類,相應服務對象有媒體、政府、手機用戶、行業用戶等,系統的設計目標總體上要實現各類服務產品的自動生成、根據服務對象進行產品的分類及服務對象有效管理等功能,此外還需建立產品、用戶、手機號段等數據庫。這就要求系統根據配置文件設定的參數能夠讀取和解碼源數據,處理后的數據存放入數據庫中形成基礎數據,根據不同用戶的需求生成各類服務產品,并且存入產品庫。前臺的系統,根據產品庫中的內容,結合提供的編輯功能進行再加工并通過通信模塊實時。系統的工作流程圖1,系統結構圖2可供參考。
2系統主要開發環境及結構
本系統采用VisualStudio2005微軟的IDE環境,數據庫選用SQLServer2005,開發語言選用C#.net,系統采用C/S模式。整個系統主要由各類服務產品的合成、產品庫的管理、方式、用戶資源管理統管理員授權五大模塊組成,根據流程和系統結構設計出了系統主界面如圖3所示。各類服務產品的合成、產品庫的管理、方式、用戶資源管理統管理員授權五大模塊組成,根據流程和系統結構設計出了系統主界面。
3技術難點及解決方案方案
3.1類的建立建立了一個文件名為PbClass2.cs的類,其中聲明了一個公共類PbClass2,在該類中建立了幾個方法,以便在主程序中直接調用這些方法,通過緩存減少資源的使用率是提高工作效率的有效編程手段。但類建好后在程序中實例化該類,提示出錯(錯誤為命名空間并不直接包含諸如字段或方法之類的成員),經過多次調試最后發現問題出在實例化對象的位置不能緊接在命名空間之后,而應在聲明的其它類內。3.2建立數據庫敏感字段時,程序提示出錯根據手機用戶所屬號段按地區歸類時,提示在程序的cmd1.ExecuteNonQuery()處出現INSERTINTO語句的語法錯誤,用戶號碼無法自動入庫。解決方法:仔細檢查各字段,其中time該字段主要意義是用戶訂購氣象信息的時間,修改數據庫uph⁃num表中字段time改為dztime后程序正常運行。3.3如何將數組中重復數據刪除并保證數據唯一在進行批量手機用戶入庫時,存在用戶用大且可能重復的情況,如將冗余用戶入庫,在合成氣象短信時則容易產生同一用戶發送多條同一氣象短信的情況,從而引起用戶投訴。解決方法:在編寫代碼時通過應用Dictionary類,在PbClass2.cs方法集類中再定義一個RemoveDupli⁃cated(StreamReadersr)刪除冗余類的方法,將文本文件中的各行讀入數組,通過判斷有無重復數據,有則將重復的用戶數據丟棄,保證數據唯一且存放入Dic⁃tionary類中,最后返回一個Dictionary類即可。但在調試中出現“截斷字符串或二進制數據。語句已終止?!卞e誤,經檢查發現原來是向數據庫中添加的變量類型有誤。原語句為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環境中選擇工具欄,選擇工具箱項,COM組件;然后選擇MicrosoftMultimediaControl,version6.0和ShockwaveFlashObject;最后在窗體上畫一個ShockwaveFlashObject控件,之后把MicrosoftMultimediaControl,version6.0去掉,再畫FLASH控件的時候就不會報這個錯誤了。3.5實現C#與Flash的交互通信通過Flash設計的登錄動畫界面如何與C#進行交互是平臺開發中需要解決的一個重要問題,如果不能解決,設計中的亮點將無法體現。解決方法:選擇工具箱上的Flash控件,放到窗體上并調整好大小在Form_Load()中加入如下代碼。axShockwaveFlash1.Movie=@"D:\menu.swf";axShockwaveFlash1.Menu=false;axShockwaveFlash1.Playing=true;并在flash原文件的“進入”按鈕所放層第一幀上添加如下動作:on(release){fscommand("SendAc⁃tion");},生成SWF文件。在VS環境下的FLASH控件找到的FSCommand事件,選擇該控件雙擊添加如下代碼:PrivatevoidaxShockwaveFlash1_FSCommand(ob⁃jectsender,AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvente){if(e.command=="SendAction"){this.Clost();}3.6用戶數據庫管理設計運行時,提醒主鍵不唯一,無法更改id的問題運行設計軟件并刪除一個用戶時,將其后的id應改為原id-1,但是運行出錯將數據庫中id的主鍵去掉,能更改id,但是瀏覽數據庫的內容時id不是按順序顯示,且刪除一條記錄有時會同時出現兩個相同的id,最后又在數據庫中將id設為主鍵后,仔細檢查程序發現一條語句有問題,以下標注為紅色,程序見下。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文本文件時出現亂碼的問題解決方法:當我們用System.IO.StreamReader讀取包含漢字的txt文件時,經常會讀出亂碼,StreamWrit⁃er寫文本文件也有類似的問題。主要原因是文件的編碼(encoding)和StreamReader/Writer的encoding不對應造成。StreamReader的默認編碼為UTF-8,而不是當前系統的ANSI代碼,因此讀取簡體中文會出現亂碼,可以通過指定編碼正確顯示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如何實現Flash動畫(啟動)界面點擊后進入平臺主界面并關閉Flash登錄界面的問題解決方法:在你的程序目錄下打開這個文件Pro⁃gram.cs。更改如下代碼:Formfmfm=newFormfm();Application.Run(fm);Formmainmain=newFormmain();Application.Run(main);Formfm其實是一個含有flash控件的窗體,在課題開發中作為程序啟動時的一個flash界面,點擊該flash的按鍵后才真正進入到主程序界面。就是你關閉了第一個父窗體,又要打開的另一個窗體。在此就是Formmain窗體,在第一個父窗體(Formfm)的響應事件中加上this.close()即可。這里要注意的是當用戶點擊進入到平臺主界面時要發生兩個事件,第一響應flash與c#的交互,即進入平臺主界面;第二要關閉flash啟動界面。
4部分功能模塊的實現方法
4.1數據庫管理功能的實現。系統數據庫分別為基礎數據庫、產品庫、用戶資源庫、字段庫?;A數據庫是存儲解碼后報文的基礎氣象數據。如24小時預報、48小時預報、72小時預報等。產品庫是存儲各類已處理好的數據產品,以便根據業務所需實時提取。用戶資源庫按用戶需求的不同,主要為氣象短信用戶、決策服務群兩大類,系統要實現用戶資源庫的建設和管理等功能。系統可以對不同的服務對象進行管理,如氣象短信用戶、決策服務層用戶、投訴用戶等進行數據庫管理,實現批量入庫、刪除、修改等功能。4.2產品生成與方法部分氣象產品如公眾預報產品、氣象短信產品在后臺通過監控報文時間,當到某一時間時啟動解報軟件翻譯放入產品庫,便于業務人員實時提取。而決策氣象服務產品如天氣公告、重要氣象信息等,系統則提供便捷的編輯界面,進行統一管理,避免了往日混亂管理情況的發生。氣象短信可以通過ftp技術實現上傳至服務器;決策氣象服務產品可以通過郵件或通過通信模塊以短信方式發送等。如圖3的功能實現方法就是利用MailMessage類完成郵件內容的設置,然后通過SmtpMail類完成郵件的發送功能,信息技術但是要實現郵件的群發及附件發送功能,則需要使用Attachments類。
5結語
通過開發主要功能模塊,系統已初具雛形,但仍有許多其它功能需要繼續研究完善,充分利用各類技術手段進行快速分發;實現各類天氣預報產品自動化和半自動處理,并提供種文字、圖片、聲音、視頻等產品素材,不斷完善系統功能,以滿足了各行業不同的需求。因此在今后的軟件功能完善過程中,同樣會遇到許多問題和新知識,這就需要我們不斷去學習,同其他知識和技能的學習一樣,掌握正確的學習方法對提高編程技術的學習效率和質量起著十分重要的作用,做好實踐筆記,將平時所遇到的問題、失誤和學習要點記錄下來,這種積累的過程就是水平不斷提高的過程。總之,理論指導實踐,而實踐豐富了理論。理論聯系實踐才是編程技術學習的指導思想。
參考文獻
[1]劉旭林,趙文芳,劉國宏.基于WebGIS的氣象信息顯示和查詢系統[N].應用氣象學報,2008,19(1):116-122.
[2]賈玲,劉芳.人工影響天氣綜合管理信息系統應用技巧[J].陜西氣象,2007(5):53-56.
[3]柳錦寶,何政偉,王增武,等.四川省氣象服務信息系統的設計與實現[J].氣象科技,2010,38(4):484-487.
[4]郭慶利,閆麗鳳,薛波,等.氣象短信業務系統開發與應用[J].安徽農業科學,2008,36(12):5233-5234.
[5]于庚康.淺談江蘇氣象信息平臺建設[J].氣象軟科學同,2009(3):109-111.
[6]張京紅,李天富,黃秋如,等.海南省應用氣象信息服務系統的設計與開發[J].廣西氣象,2005,26(A01):67-69.
作者:普布 德吉央宗 張瓊 次珍 衛東 單位:西藏拉薩市氣象局
- 上一篇:微信在氣象服務的優勢及發展
- 下一篇:林業氣象服務探索與思考