齊懷琴,周 瓊,路旭明,萬曉青
(齊齊哈爾大學 通信與電子工程學院,黑龍江 齊齊哈爾161006)
森林火災對森林的破壞性極大,危害極深,造成的經濟損失相當嚴重。因此,如何長期不間斷對森林進行監測,對火災做出預測預報,并在災后能夠全面掌握森林的情況,幫助決策人員能夠做出正確的決策,使火災對森林造成危害降到最低限度成為急需解決的問題。
目前森林火災預測系統根據氣象站發布風速、溫濕度、降雨量等信息進行預測,但由于氣象站發布的數據范圍大,而且發布的周期較長,無法體現森林環境參數的實時變化,導致火險等級預測相對滯后。為了解決這一問題,本文采用集傳感器技術、GPS定位技術、視頻圖像采集技術、WCDMA無線傳輸技術于一體的監測設備采集森林環境信息,并通過對Google Maps API的二次開發,實現監測信息的發布,有助于監測人員實時掌握各監測站點信息,盡早控制火情。
整個系統設計主要包含林區監測系統、氣象設備、3G網絡、Web服務器、客戶端。總體結構如圖1所示。

圖1 系統總體結構
在防火期,將飛艇升到監測區域高空,對森林進行全天候實時監測[1-3]。林區監測設備可以實現對采集的溫濕度數據及視頻圖像信息進行分析判斷,將處理結果通過3G網絡發送Web服務器,客戶端監測系統對采集的數據結合氣象設備發送的氣象數據進行分析和處理。監測設備數據采集的實時性和準確性及網絡傳輸的可靠性為火險等級預測提供了技術和數據支撐,為整個系統的平穩、高效運行提供保證。
林區信息采集終端設備主要由360°變換角度掃描的高倍攝像機、高性能的ARM9系列處理器(S3C2440A)、溫濕度傳感器、GPS定位模塊、無線發射模塊組成。其中S3C2440A作為主控制芯片,負責系統的綜合事務,控制溫濕度傳感器、視頻采集模塊、無線傳輸模塊及GPS定位模塊。該設備實時對森林監測,為整個系統的實現提供了數據支持。總體結構框圖如圖2所示。

圖2 監測設備結構框圖
監測設備主要通過火焰圖像識別算法識別火焰圖像及對溫濕度傳感器的數據進行分析判斷,當達到報警指標時,將采集到的數據及GPS定位信息發送到監控中心;未達到報警指標時則會定時將采集的溫濕度數據及GPS信息發送到監控中心,系統會根據采集的數據做出火險等級預測。監測設備通過對溫濕度、圖像的分析判斷為監控中心系統運行提供數據支持。實現軟件流程如圖3所示。
該系統以My Eclipse 8.5作為開發平臺,以Tomcat 6.0為服務器,采用JSP(Java Server Pages)開發Java Web工程。系統采用JavaScript將Google Maps API V3內嵌到自己的網頁中實現地圖信息操作,為了能夠迅速回應用戶動作并向服務器發送讀取所需數據,采用AJAX技術。用Servlet作為后臺的主控程序,采用MySQL數據庫管理森林監測系統采集的數據,整體采用B/S架構[4-6]。平臺搭建結構圖如圖4所示。

3.2.1 Google JavaScript Maps API V3
Google為Google Maps API用戶提供一種注冊碼,在非盈利和合法的前提下是可以免費注冊的[7-9]。開發人員可以采用JavaScript通過Google公司提供的Google Maps API直接在HTML頁面上內嵌Google Maps信息服務。通過HTML自身的信息與Google Maps API相結合,可以大大提高其開發效率,增強設計各個環節的功能,減少系統功能的重復開發,降低了開發的難度和工作量。
Google JavaScript Maps API V3是一項免費服務,在用戶可免費訪問的任何網站上均有提供,其反應速度更快,適用于傳統的桌面瀏覽器應用程序。該API提供了大量實用工具用以處理地圖,并通過各種服務向地圖添加內容,從而使網站能夠創建功能全面的地圖應用程序。
3.2.2 Ajax+JSP技術應用
Ajax技術可以實現在不更新整個頁面的前提下維護數據,僅向服務器發送和取回必需的數據,不再發送和取回相同的內容,這使得Web應用程序能夠迅捷地回應用戶動作,且避免了發送沒有改變過的信息。
JSP頁面由HTML代碼和嵌入其中的Java代碼組成。當用戶請求JSP網頁時,首先執行其中的程序段,然后將執行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態網頁所需要的功能。
本文在客戶端用戶通過JavaScript調用Ajax中間層,向Web應用服務器發送Http請求,Web應用服務器通過JSP負責界面處理以及后臺數據庫的處理,將獲取的數據通過XML文本傳遞到客戶端,并采用Ajax中間層對DOM進行解析來更新HTML頁面,使用戶獲得需要的信息。
系統以Google Map為模擬載體,以Java算法為后臺,負責對火情信息識別、判斷、分析等處理;在HTML頁面上采用對Google Maps API,JavaScript算法設計,完成對現實火災的預警與處理的模擬。系統所用到的數據如表1所示。

表1 系統數據
根據林區信息采集終端的處理數據結果,后臺系統對采集數據進行分析,首先判斷是否有報警信息,當有報警信息時根據GPS數據在地圖定位該站點,查看該站點視頻監測信息及最新發布環境參數信息;當沒有報警信息時,后臺讀取數據庫中的溫濕度數據,通過黑龍江森林保護研究所設計的801火災預警模型結合數據庫中氣象設備采集的風速、降雨量數據進行火險等級預測并發布。具體實現流程如圖5所示。

圖5 后臺系統功能實現流程圖
數據庫中數據在地圖上顯示的功能是首先通過Fire-DisplayAction.java與數據庫取得連接,讀取數據庫中所需變量的值,如溫濕度、風速、降雨量,然后對數據進行算法處理得到FIRE_GRADE的值,再通過配置web.xml和struts.xml文件,在firedisplay.jsp文件中通過表單將數據庫中所需要的值取出,并在站點中實現顯示。具體的代碼如下所示:
/*取得數據庫連接*/
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;
}
}
/*遍歷數據庫中所需變量的值*/
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}>
/*在地圖上單擊站點坐標顯示采集參數信息*/
//在用戶單擊的地圖位置上添加標記
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('監控信息',information)];
//為標記添加事件處理函數:單擊標記時顯示信息窗口
GEvent.addListener(newMarker,'click',
function(){ newMarker.openInfoWindowTabs(tabs,{max-Width:400,selectedTab:0});});
//將創建的標記添加到地圖中me.map_.addOverlay(newMarker);
}
以上代碼顯示了沒有報警信息時站點信息顯示,有報警信息時信息顯示方法和上述代碼類似,不同的是視頻信息顯示需要添加VIDEO_ADDR變量,該變量是視頻存儲的地址,通過鏈接視頻存儲的地址來讀取。
本文對系統進行了測試,當沒有報警信息時,通過定位站點可以顯示站點坐標和監控信息,如圖6所示。當有報警信息時,可以顯示站點坐標、監控信息(最新發布的)和監測視頻信息,如圖7所示。

本文通過對Google Maps API的二次開發,實現對采集終端的數據分析、處理以及在Google地圖上的發布,不僅提高了監測的實時性,也使決策人員非常方便、直觀了解站點的火險情況,幫助其采取合適的措施控制火情。同時Google Maps API有強大尋路功能,這使得其Google Maps API在森林火災監測系統的應用具有很大的實用價值。
[1]莫奇京,羅蔚生,楊桂賢.森林防火遠程智能監測系統建設技術方案初探[J].森林防火,2012,6(2):39-41.
[2]齊懷琴,李春林.基于雙單片機林火監測飛艇姿態控制系統的研究[J].林業實用技術,2005(5):29-30.
[3]張勁松,齊懷琴.基于SOPC技術飛艇在航空護林上的應用[J].林業實用技術,2009(12):55-56.
[4]齊懷琴,徐剛,花曉慧.基于DSP的遠程火災監控系統設計[J].測控技術,2010,29(12):48-51.
[5]齊懷琴,徐剛,王娜.基于視頻圖像的森林火災識別算法研究[J].電視技術,2010,34(9):116-118.
[6]劉艷朋,楊寶祝,王元勝.基于B/S的森林火災預警與指揮系統設計[J].計算機工程與設計,2013,34(1):364-365.
[7]李垠,左德霖,侯建明,等.基于Google Map的地震綜合信息服務系統構建研究[J].大地測量與地球動力學,2011,31(6):118-121.
[8]鄭虹暉,陽國貴,劉光博.基于Google地圖的自動氣象站監測模塊的研制[J].氣象研究與應用,2010,31(4):57-60.
[9]程超然,蒙嘉文,王朱濤,等.基于GoogleMaps API的沙漠化地理信息系統設計方案[J].四川林業科技,2010,31(2):49-50.