齊懷琴,周 瓊,路旭明,萬曉青
(齊齊哈爾大學 通信與電子工程學院,黑龍江 齊齊哈爾161006)
森林火災對森林的破壞性極大,危害極深,造成的經(jīng)濟損失相當嚴重。因此,如何長期不間斷對森林進行監(jiān)測,對火災做出預測預報,并在災后能夠全面掌握森林的情況,幫助決策人員能夠做出正確的決策,使火災對森林造成危害降到最低限度成為急需解決的問題。
目前森林火災預測系統(tǒng)根據(jù)氣象站發(fā)布風速、溫濕度、降雨量等信息進行預測,但由于氣象站發(fā)布的數(shù)據(jù)范圍大,而且發(fā)布的周期較長,無法體現(xiàn)森林環(huán)境參數(shù)的實時變化,導致火險等級預測相對滯后。為了解決這一問題,本文采用集傳感器技術(shù)、GPS定位技術(shù)、視頻圖像采集技術(shù)、WCDMA無線傳輸技術(shù)于一體的監(jiān)測設(shè)備采集森林環(huán)境信息,并通過對Google Maps API的二次開發(fā),實現(xiàn)監(jiān)測信息的發(fā)布,有助于監(jiān)測人員實時掌握各監(jiān)測站點信息,盡早控制火情。
整個系統(tǒng)設(shè)計主要包含林區(qū)監(jiān)測系統(tǒng)、氣象設(shè)備、3G網(wǎng)絡、Web服務器、客戶端??傮w結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)
在防火期,將飛艇升到監(jiān)測區(qū)域高空,對森林進行全天候?qū)崟r監(jiān)測[1-3]。林區(qū)監(jiān)測設(shè)備可以實現(xiàn)對采集的溫濕度數(shù)據(jù)及視頻圖像信息進行分析判斷,將處理結(jié)果通過3G網(wǎng)絡發(fā)送Web服務器,客戶端監(jiān)測系統(tǒng)對采集的數(shù)據(jù)結(jié)合氣象設(shè)備發(fā)送的氣象數(shù)據(jù)進行分析和處理。監(jiān)測設(shè)備數(shù)據(jù)采集的實時性和準確性及網(wǎng)絡傳輸?shù)目煽啃詾榛痣U等級預測提供了技術(shù)和數(shù)據(jù)支撐,為整個系統(tǒng)的平穩(wěn)、高效運行提供保證。
林區(qū)信息采集終端設(shè)備主要由360°變換角度掃描的高倍攝像機、高性能的ARM9系列處理器(S3C2440A)、溫濕度傳感器、GPS定位模塊、無線發(fā)射模塊組成。其中S3C2440A作為主控制芯片,負責系統(tǒng)的綜合事務,控制溫濕度傳感器、視頻采集模塊、無線傳輸模塊及GPS定位模塊。該設(shè)備實時對森林監(jiān)測,為整個系統(tǒng)的實現(xiàn)提供了數(shù)據(jù)支持??傮w結(jié)構(gòu)框圖如圖2所示。
圖2 監(jiān)測設(shè)備結(jié)構(gòu)框圖
監(jiān)測設(shè)備主要通過火焰圖像識別算法識別火焰圖像及對溫濕度傳感器的數(shù)據(jù)進行分析判斷,當達到報警指標時,將采集到的數(shù)據(jù)及GPS定位信息發(fā)送到監(jiān)控中心;未達到報警指標時則會定時將采集的溫濕度數(shù)據(jù)及GPS信息發(fā)送到監(jiān)控中心,系統(tǒng)會根據(jù)采集的數(shù)據(jù)做出火險等級預測。監(jiān)測設(shè)備通過對溫濕度、圖像的分析判斷為監(jiān)控中心系統(tǒng)運行提供數(shù)據(jù)支持。實現(xiàn)軟件流程如圖3所示。
該系統(tǒng)以My Eclipse 8.5作為開發(fā)平臺,以Tomcat 6.0為服務器,采用JSP(Java Server Pages)開發(fā)Java Web工程。系統(tǒng)采用JavaScript將Google Maps API V3內(nèi)嵌到自己的網(wǎng)頁中實現(xiàn)地圖信息操作,為了能夠迅速回應用戶動作并向服務器發(fā)送讀取所需數(shù)據(jù),采用AJAX技術(shù)。用Servlet作為后臺的主控程序,采用MySQL數(shù)據(jù)庫管理森林監(jiān)測系統(tǒng)采集的數(shù)據(jù),整體采用B/S架構(gòu)[4-6]。平臺搭建結(jié)構(gòu)圖如圖4所示。
3.2.1 Google JavaScript Maps API V3
Google為Google Maps API用戶提供一種注冊碼,在非盈利和合法的前提下是可以免費注冊的[7-9]。開發(fā)人員可以采用JavaScript通過Google公司提供的Google Maps API直接在HTML頁面上內(nèi)嵌Google Maps信息服務。通過HTML自身的信息與Google Maps API相結(jié)合,可以大大提高其開發(fā)效率,增強設(shè)計各個環(huán)節(jié)的功能,減少系統(tǒng)功能的重復開發(fā),降低了開發(fā)的難度和工作量。
Google JavaScript Maps API V3是一項免費服務,在用戶可免費訪問的任何網(wǎng)站上均有提供,其反應速度更快,適用于傳統(tǒng)的桌面瀏覽器應用程序。該API提供了大量實用工具用以處理地圖,并通過各種服務向地圖添加內(nèi)容,從而使網(wǎng)站能夠創(chuàng)建功能全面的地圖應用程序。
3.2.2 Ajax+JSP技術(shù)應用
Ajax技術(shù)可以實現(xiàn)在不更新整個頁面的前提下維護數(shù)據(jù),僅向服務器發(fā)送和取回必需的數(shù)據(jù),不再發(fā)送和取回相同的內(nèi)容,這使得Web應用程序能夠迅捷地回應用戶動作,且避免了發(fā)送沒有改變過的信息。
JSP頁面由HTML代碼和嵌入其中的Java代碼組成。當用戶請求JSP網(wǎng)頁時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。
本文在客戶端用戶通過JavaScript調(diào)用Ajax中間層,向Web應用服務器發(fā)送Http請求,Web應用服務器通過JSP負責界面處理以及后臺數(shù)據(jù)庫的處理,將獲取的數(shù)據(jù)通過XML文本傳遞到客戶端,并采用Ajax中間層對DOM進行解析來更新HTML頁面,使用戶獲得需要的信息。
系統(tǒng)以Google Map為模擬載體,以Java算法為后臺,負責對火情信息識別、判斷、分析等處理;在HTML頁面上采用對Google Maps API,JavaScript算法設(shè)計,完成對現(xiàn)實火災的預警與處理的模擬。系統(tǒng)所用到的數(shù)據(jù)如表1所示。
表1 系統(tǒng)數(shù)據(jù)
根據(jù)林區(qū)信息采集終端的處理數(shù)據(jù)結(jié)果,后臺系統(tǒng)對采集數(shù)據(jù)進行分析,首先判斷是否有報警信息,當有報警信息時根據(jù)GPS數(shù)據(jù)在地圖定位該站點,查看該站點視頻監(jiān)測信息及最新發(fā)布環(huán)境參數(shù)信息;當沒有報警信息時,后臺讀取數(shù)據(jù)庫中的溫濕度數(shù)據(jù),通過黑龍江森林保護研究所設(shè)計的801火災預警模型結(jié)合數(shù)據(jù)庫中氣象設(shè)備采集的風速、降雨量數(shù)據(jù)進行火險等級預測并發(fā)布。具體實現(xiàn)流程如圖5所示。
圖5 后臺系統(tǒng)功能實現(xiàn)流程圖
數(shù)據(jù)庫中數(shù)據(jù)在地圖上顯示的功能是首先通過Fire-DisplayAction.java與數(shù)據(jù)庫取得連接,讀取數(shù)據(jù)庫中所需變量的值,如溫濕度、風速、降雨量,然后對數(shù)據(jù)進行算法處理得到FIRE_GRADE的值,再通過配置web.xml和struts.xml文件,在firedisplay.jsp文件中通過表單將數(shù)據(jù)庫中所需要的值取出,并在站點中實現(xiàn)顯示。具體的代碼如下所示:
/*取得數(shù)據(jù)庫連接*/
public Connection getCon(){
try{Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost:3306/firedatabase?user=root&password=root&useUnicode=true&characterEncoding=gb2312";
con=DriverManager.getConnection(url);
}catch(Exception ex){
ex.printStackTrace();
}return con;
public ResultSet query(String sql){
try{con=getCon();
stat=con.createStatement();
rs=stat.executeQuery(sql);
}catch(Exception ex){
ex.printStackTrace();
}return rs;
}
}
/*遍歷數(shù)據(jù)庫中所需變量的值*/
public String fireDispaly()throws Exception{
rs=query("select*from firetable");
while(rs.next())
{setdata1(rs.getString("AIR_TEMP"));
setdata2(rs.getString("AIR_HUMI"));
setdata3(rs.getString("WIND_GRADE"));
setdata4(rs.getString("RAINFALL"));
setdata5(rs.getString("FIRE_GRADE"));
}
Belt samples size on tensile experiment is shown in the following Figure 2, according this size to cut conveyor belt materials, gage′s length is 20 mm, gage′s cross section area is 25 mm×10 mm, the tensile rate is 500 mm/min.
HttpServletResponse response=ServletActionContext.getResponse();
return"firedisplay";
}
/*通過表單讀取所需變量的值*/
<form action="firedisplay.action">
<input value="提交"type="submit"/>
</form>
<input type="hidden"id="data1"name="data1"value=MYM{data1}><br/>
<input type="hidden"id="data2"name="data2"value=MYM{data2}><br/>
<input type="hidden"id="data3"name="data3"value=MYM{data3}><br/>
<input type="hidden"id="data4"name="data4"value=MYM{data4}><br/>
<input type="hidden"id="data5"name="data5"value=MYM{data5}>
/*在地圖上單擊站點坐標顯示采集參數(shù)信息*/
//在用戶單擊的地圖位置上添加標記
GRulerControl.prototype.onMapClick_=function(marker,latlng){var me=this.rulerControl_;
var address=me.createInfoWindow_(newMarker);
var data1=document.getElementById("data1").value;
var data2=document.getElementById("data2").value;
var data3=document.getElementById("data3").value;
var data4=document.getElementById("data4").value;
var data5=document.getElementById("data5").value;
var information='溫度(攝氏度):'+data1+'<br/>濕度(%):'+data2+'<br/>風力(級):'+data3+'<br/>降雨量(mm):'+data4+'<br/>預測火險等級:'+data5;
var tabs=[new GInfoWindowTab('站點坐標',address),
new GInfoWindowTab('監(jiān)控信息',information)];
//為標記添加事件處理函數(shù):單擊標記時顯示信息窗口
GEvent.addListener(newMarker,'click',
function(){ newMarker.openInfoWindowTabs(tabs,{max-Width:400,selectedTab:0});});
//將創(chuàng)建的標記添加到地圖中me.map_.addOverlay(newMarker);
}
以上代碼顯示了沒有報警信息時站點信息顯示,有報警信息時信息顯示方法和上述代碼類似,不同的是視頻信息顯示需要添加VIDEO_ADDR變量,該變量是視頻存儲的地址,通過鏈接視頻存儲的地址來讀取。
本文對系統(tǒng)進行了測試,當沒有報警信息時,通過定位站點可以顯示站點坐標和監(jiān)控信息,如圖6所示。當有報警信息時,可以顯示站點坐標、監(jiān)控信息(最新發(fā)布的)和監(jiān)測視頻信息,如圖7所示。
本文通過對Google Maps API的二次開發(fā),實現(xiàn)對采集終端的數(shù)據(jù)分析、處理以及在Google地圖上的發(fā)布,不僅提高了監(jiān)測的實時性,也使決策人員非常方便、直觀了解站點的火險情況,幫助其采取合適的措施控制火情。同時Google Maps API有強大尋路功能,這使得其Google Maps API在森林火災監(jiān)測系統(tǒng)的應用具有很大的實用價值。
[1]莫奇京,羅蔚生,楊桂賢.森林防火遠程智能監(jiān)測系統(tǒng)建設(shè)技術(shù)方案初探[J].森林防火,2012,6(2):39-41.
[2]齊懷琴,李春林.基于雙單片機林火監(jiān)測飛艇姿態(tài)控制系統(tǒng)的研究[J].林業(yè)實用技術(shù),2005(5):29-30.
[3]張勁松,齊懷琴.基于SOPC技術(shù)飛艇在航空護林上的應用[J].林業(yè)實用技術(shù),2009(12):55-56.
[4]齊懷琴,徐剛,花曉慧.基于DSP的遠程火災監(jiān)控系統(tǒng)設(shè)計[J].測控技術(shù),2010,29(12):48-51.
[5]齊懷琴,徐剛,王娜.基于視頻圖像的森林火災識別算法研究[J].電視技術(shù),2010,34(9):116-118.
[6]劉艷朋,楊寶祝,王元勝.基于B/S的森林火災預警與指揮系統(tǒng)設(shè)計[J].計算機工程與設(shè)計,2013,34(1):364-365.
[7]李垠,左德霖,侯建明,等.基于Google Map的地震綜合信息服務系統(tǒng)構(gòu)建研究[J].大地測量與地球動力學,2011,31(6):118-121.
[8]鄭虹暉,陽國貴,劉光博.基于Google地圖的自動氣象站監(jiān)測模塊的研制[J].氣象研究與應用,2010,31(4):57-60.
[9]程超然,蒙嘉文,王朱濤,等.基于GoogleMaps API的沙漠化地理信息系統(tǒng)設(shè)計方案[J].四川林業(yè)科技,2010,31(2):49-50.