一個基於Web Service的 洪氾預警系統 吳佩珊,張雅惠 國立臺灣海洋大學資訊工程系 {19957019, yahui}@ntou.edu.tw TCSE&OOTA , July , 2011 2019/4/17 DBLAB @ NTOU
綱要 緒論 水利模組介紹 系統整體架構 Web Service設計 系統實作介面 相關研究 結論與未來方向 2019/4/17 DBLAB @ NTOU
緒論 台灣常年因颱風與豪雨事件所帶來的降雨,而釀成嚴重的淹水災害,所以我們希望建立一個洪氾預警系統,藉由即時的偵測資料有效模擬推估未來的水情預報,並利用合適的淹水警戒值研判預警區域,以掌握黃金時間疏散避災減少損失。 由於洪氾預警系統的建立,時常需要藉由各式各樣的地理水文資料進行傳遞交換,再經過異質平台的演算模組進行通訊合作,因此模組彼此之間的溝通橋梁成為重要的研究議題。 2019/4/17 DBLAB @ NTOU
緒論 (續) 我們採用SOA(Service-Oriented Architecture)的概念,設計一個完善的系統架構,並基於Web Service的技術實作有效的資訊整合平台,讓在不同作業系統下,使用不同程式語言所開發的水利模組,也能直接進行通訊和迅速地傳遞交換資料。 我們同時會將模組的演算結果自動匯入資料庫,最後利用Google Map API的技術,搭配圖表和地圖適當地呈現於網頁上,可以清楚地顯示洪氾預警區域,以協助相關單位即時做出正確的決策支援,減少人員傷亡及財務的損失。 2019/4/17 DBLAB @ NTOU
水利模組介紹 降雨逕流演算模式 - 結合氣象偵測站的即時降雨資料,發展河川上游的逕流模擬演算,以預測未來三小時的流量。 河道斷面演算模式 - 考慮不確定土石量影響,建立集水區河道斷面的洪水模擬演算,得知河川中下游的溢岸流量。 二維淹水演算模式 - 模擬演算河川下游低窪地區的水深高度,以做為即時淹水預警區域的研判依據。 海岸越波演算模式 - 模擬演算河海口暴潮水位以及海岸保護結構物的越波流量,以推估沿海低窪地區的海水溢淹情形。 2019/4/17 DBLAB @ NTOU
模組關係圖 2019/4/17 DBLAB @ NTOU
系統架構圖 2019/4/17 DBLAB @ NTOU
程式流程圖 M1Output.txt M2Output.txt M3Output.txt M4Output.txt 2019/4/17 DBLAB @ NTOU
Web Service設計 系統環境 : 第一類型Web Service : Windows : 使用Microsoft Visual Studio 2008軟體。 Linux : 使用MonoDevelop 2.4軟體。 第一類型Web Service : 提供跨平台的通訊合作,以便跨平台呼叫應用程式執行。 01 02 03 04 05 06 07 08 namespace M3Caller{ public class Service1 : System.Web.Services.WebService{ [WebMethod] public void M3Caller(){ Process.Start(@"/var/www/Flood/Program /M3Detector"); }//利用System.Diagnostics的Process物件呼叫「M3Detector」偵測程式執行。 } 2019/4/17 DBLAB @ NTOU
Web Service設計 (續) 第二類型Web Service : 提供跨平台的資料傳遞,該動作可視為一組Web Service的結合,即讀取和寫入。 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 namespace Linux_Read{//於Linux系統下,執行讀取資料的動作。 public class readData{//定義傳遞參數的物件,裡頭可含多個字串參數。 public string M3Out1; } public class Service1 : System.Web.Services.WebService{ [WebMethod] public readData Read(){ readData RData = new readData();//宣告傳遞參數。 StreamReader file_M3Out1 = new StreamReader (@"/var/www/Flood/TwoD_M3/M3Output1.txt"); //利用System.IO的StreamReader物件宣告檔案讀取變數,並對應特定讀檔位置。 while(file_M3Out1.Peek() != -1){ RData.M3Out1 = RData.M3Out1 + "\r\n" + file_M3Out1.ReadLine(); }//判斷StreamReader物件的Peek函式回傳的整數是否為-1,即可得知讀取結束。 file_M3Out1.Close(); return RData; 2019/4/17 DBLAB @ NTOU
Web Service設計 (續) 將前頁產生的「Linux_Read」透過「Web參考」的方式引用 處將其命名為「Data」,即可藉由此物件取得回傳的資料。 01 02 03 04 05 06 07 08 09 10 11 12 13 14 namespace Linux_Write{//於Windows環境下,執行寫入資料的動作。 public class Service1 : System.Web.Services.WebService{ [WebMethod] public void Write(){ Linux_Read.Service1 Data = new Linux_Write.Linux_Read.Service1(); StreamWriter file_M3Out1 = new StreamWriter (@"C:\Inetpub\wwwroot\Flood\TwoD_M3\M3Output1.txt"); //利用System.IO的StreamWriter物件宣告檔案寫入變數,並對應特定寫檔位置。 file_M3Out1.WriteLine(Data.Read().M3Out1); //藉由StreamWriter物件的WriteLine函式將接收到的字串寫入對應的檔案中。 file_M3Out1.Close(); } 2019/4/17 DBLAB @ NTOU
系統實作介面 河川流量折線圖 二維淹水預警區域 (橫軸:時間,縱軸:河川流量) (以台灣南部的林邊溪為案例) 2019/4/17 DBLAB @ NTOU
相關研究 論文[3]亦是利用SOA概念和Web Service技術,進行複雜的演算程式,並建立一個整合性的平台,提供特定的地理水文專家進行演算的參數調整。 相異處 : 我們主要協助洪氾預警系統的建立,並將演算結果以具親和力的頁面呈現給一般大眾。 論文[7]則是利用FEWS-Taiwan系統和Google Map API技術,透過網頁在Web上做即時線上查詢與偵測站的警戒標示。 相異處 : 在資料的傳遞與水利模組的通訊部分,我們是利用Web Service技術來協助處理跨平台的需求。 2019/4/17 DBLAB @ NTOU
結論與未來方向 本篇論文研究如何以Web Service中的SOAP技術為基礎,實作資訊整合平台,以協助開發完善的洪氾預警系統。 未來我們期望能運用REST(Representional State Transfer)等不同技術實作此系統,進一步比較SOAP與REST兩者的優劣,以有效提升資訊整合平台的執行效率。 2019/4/17 DBLAB @ NTOU