齐怀琴,周 琼,路旭明,万晓青
(齐齐哈尔大学 通信与电子工程学院,黑龙江 齐齐哈尔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.