APP下载

基于Android平台的地震灾情采集系统的设计与实现

2021-12-09余思汗雷启云

地震工程学报 2021年6期
关键词:中间层烈度灾情

余思汗,雷启云,刘 超,杨 顺,王 静

(宁夏回族自治区地震局,宁夏 银川 750001)

0 引言

地震是人类面临的一种无法避免的自然灾害。破坏性地震往往造成重大生命财产损失,抗震救灾就是争分夺秒,与时间赛跑,因此在短时间内做出科学合理的决策,是保障地震应急工作高效有序开展的关键[1-3]。如何在较短的时间内,掌握数万平方公里,甚至是数十万平方公里范围内的人员、房屋建筑物、交通、电力通信等基础设施、供水供气等生命线工程、滑坡崩塌等地质灾害、火灾危化品和有毒有害气体泄露等次生灾害以及社会生活生产秩序等情况,面临着巨大挑战。对地震灾情的信息的获取,是了解地震现场灾情的有效途径。

为了能够快速获取到地震现场的灾情信息,需要利用通信领域的科学技术,尤其是用户量庞大的Android移动平台[4-5]。本文利用Android平台搭建一套基于移动端的APP采集系统,本系统可快速、简单、准确、真实的上报该地区的地震影响情况,汇总分析后,为地震应急响应和应急处置提供支撑[6],保障抗震救灾大局。

1 研发目的

破坏性地震发生后,快速了解地震影响范围、灾情分布和受灾严重情况等灾情信息是应急救援和指挥决策的重要依据。这就需要多种手段进行灾情信息采集。该系统通过前方的现场人员和后方的技术人员协同作业,将采集到的灾情数据接收并处理,从而快速获取地震影响地区内的灾情信息与数据。

系统建设主要目标如下:

(1)灾情信息采集:灾情信息员、网格员等利用终端采集模块,记录采集地震受影响地区主要目标的位置、文本、图片和视频等数据[7],完成目标信息采集,使用者可以对自己采集的信息进行查询、修改、编辑、删除等操作,以确保上报的信息和数据是及时、准确的灾情信息。

(2)灾情数据接收与处理:通过对回传到自治区地震局数据中心的信息数据进行接收与解译,对数据进行整理、汇总和加工处理,自动完成信息数据的空间化,并对数据进行入库。

(3)灾情信息展示:将采集到的灾情信息进行智能甄别,把有效的信息标注在地图中,以便其他现场人员能够及时获取到灾情信息。

(4)灾情数据产出:通过对上报的数据统计分析,产出人员伤亡数量及位置数据、交通震害分布数据、重灾区位置数据、次生灾害分布数据等,以及烈度评定位置点和文档报告。

2 系统设计

本系统基于以下两种开发环境:一是使用Idea开发软件,前端采用JavaScript编程语言,后端采用Java编程语言;另一个是使用Android Studio开发软件,采用Kotlin编程语言。数据库同样是采用了两套:一种是MongoDB数据库,存储有关图片信息;另一种是SQL Server数据库,存储数据信息。

2.1 系统设计原则

本文开发的地震灾情采集系统设计原则主要是以下几个方面:

(1)充分、合理的利用现有网络设备及资源;

(2)采用模块化设计,各模块之间既相互独立又可组合相连;

(3)各模块尽可能采用公共源码程序,通过设置相应的参数文件、数据文件,达到代码的重复利用;

(4)为系统的再开发预留接口,以便于扩展,也可根据新增设备及设备改动等情况进行适当调整;

(5)系统界面友好、美观,操作方便、快捷。

2.2 结构设计

基于Android平台的地震灾情采集系统采用B/S的架构模式,由移动客户端、中间层、数据层组成的三层架构,如图1所示。

图1 灾情采集系统架构图Fig.1 Architecture of disaster collection system

2.2.1 移动客户端

该系统的移动客户端为基于Android平台的手机终端或者是Pad(portable andriod device),操作系统要求Android4.3以上的均可。客户端主要是由三个模块组成(图2):灾情信息和烈度上报模块、上报信息查询管理模块、统计分析模块。

图2 移动客户端展示Fig.2 Mobile client presentation

(1)灾情信息和烈度上报模块主要包括地震现场的受伤人数、死亡人数、损坏房屋建筑数量、道路破坏位置、地质灾害位置等信息上报和烈度上报。将采集到的灾情信息、位置信息和判定的烈度以填表、图片、视频、语音和GPS定位的方式进行上报,在没有网络的情况下可以离线缓存在本地数据库中,待有网的时候再进行回传。

(2)上报信息查询和管理模块主要是对上报的信息进行查看、修改和删除,通过HTTP接口发出请求来查看自己及他人的上报信息,对自己上报有误的信息进行修正,并对他人在同一位置已经上报过了的灾情信息,可将自己的上报信息进行删除,不做重复上报。

(3)统计分析模块主要是对上报的信息进行统计分析和汇总,以行政区划为单元,对上报的信息统计分析,分别把乡镇、县区、市、自治区四级行政区划通过统计图、表格、文档的形式进行统计分析展示出来,可以在客户端随时查看并分享。

2.2.2 中间层

该系统的中间层就是前端和后台服务接口,对上下行灾情信息表格、图片、视频、语音进行解析、整理[8],其实质就是系统的业务逻辑层。客户端请求一些数据库中的数据,但客户端只做展示,请求的具体实现是靠中间层来完成的,同样对数据库的操作,如查看、修改、新增、删除等操作,也是由中间层来实现的。客户端获取到的信息是被中间层处理过的数据,业务逻辑也都在中间层处理的,例如不同用户(图3)登录进系统,其所拥有的权限和能够查看到的信息是不同的,这个业务逻辑处理就是在中间层做人员角色判断。

图3 用户分类图Fig.3 User classification map

2.2.3 数据层

该系统的数据层是负责数据的存储、数据的调用和组织数据[9],也就是说所有介质化的读取数据和写入数据都是数据层的工作。客户端采集的灾情信息数据经过中间层处理之后,存储在数据层中,当客户端发出服务请求时,中间层完成该逻辑过程,从数据层中调用数据,再经中间层处理后,在客户端页面做展示。数据层为灾情信息统计分析、客户端展示等提供了数据支撑。

3 系统实现与功能测试

3.1 系统实现

地震灾情信息采集系统通过客户端实时监听12322速报短信的地震三要素,第一时间内将监测到的信息同步给所有客户端,并进行通知提醒使用APP对当次地震灾情信息上报,管理人员通过登录后台管理系统,便可对灾情信息统计、查询等操作。图4所示为地震灾情采集系统业务流程图。

图4 地震灾情采集系统业务流程图Fig.4 Business flow chart of earthquake disaster acquisition system

3.1.1 灾情信息和烈度上报

灾情速报员通过APP软件填写表单,采集地震现场的灾情信息,经处理后由HTTP接口上传至服务器端的SQL Server数据库中,对于图片、视频、语音则会上传至服务器端的MongoDB数据库中。通过采集定位点经纬度坐标,填写相对应的烈度信息,将烈度定位点的坐标信息和属性信息上传至服务器端的SQL Server数据库中,记录该点的烈度信息。当地震现场的网络中断时,采集的灾情信息和烈度信息就会提交到本地数据库中,在网络恢复的情况下立马进行上传,但不做清空本地数据库中的记录处理,为网络再次中断后可查看上报过的信息提供便利,可以通过手动删除数据的方式来达到释放内存的目的。如图5所示。

图5 手动释放本地数据库内存Fig.5 Manual release of local database memory

3.1.2 查询管理

考虑到上报的灾情信息存在漏报、重复上报、变化等因素,因此对已经上报过的灾情信息可以进行查询并管理数据。根据对地震灾区进一步的调查,了解到了更多的灾情信息,可以查询历史上报记录,对该区域的灾情信息进行修改、新增等操作,以确保灾情信息采集的实时、准确。通过高德地图API提供的基础地理空间数据[10]作为底图,查看其他已经上报的灾情位置信息和烈度评定信息,可以对自己的下一个调查点进行规划,以便最大限度地将紧缺的人力资源合理利用起来,达到高效、精准、迅速的地震灾区情况采集目标。

灾情信息查询的核心代码如下:

Public List>findOptionById(String category,String pid,String userid,String unitcode,String startTime,String endTime,String province,String city,String county){

Stringhql ="select * from equakeinfo where 1=1";

if(category!=null &&!category.equals("")){

hql+=" and category ='" + category+"'";

}

if(pid!=null &&!pid.equals("")){

hql+=" and otherfieldid ='" + pid+"'";

}

if(userid!=null &&!userid.equals("")){

hql+=" and usid ='" + userid+"'";

}else{

if(unitcode!=null &&!unitcode.equals("")){

hql+=" and unitcode ='" + unitcode+"'";

}

if(province!=null &&!province.equals("")){

hql+=" and province ='" + province+"'";

}

if(city!=null &&!city.equals("")){

hql+=" and city ='" + city+"'";

}

if(county!=null &&!county.equals("")){

hql+=" and county ='" + county+"'";

}

}

if(startTime!=null &&!startTime.equals("")&&endTime!=null &&!endTime.equals("")){

hql+=" and createdate between '" + startTime+"' and '" + endTime+"' ";

}

return this.queryBySql(hql);

}

3.1.3 统计分析

通过对服务器数据库中的灾情数据进行分析处理,使用echarts图技术作用于页面进行展示,主要采用饼状图、柱状图、横向堆叠图、表格等形式直观地将统计数据信息展示于页面中。用户进入统计分析模块后,会根据用户个人信息查询该用户的权限范围,再根据权限范围查询并返回给用户符合其权限下的数据信息于界面端,界面端接收到返回的信息后根据统计要求去做数据处理展示。通过对统计分析的查看,用户以及后台管理员便可了解震区灾情的实时动态变化,根据具体的实际灾区情况提出建议对策,就能够科学地应对灾情。

建筑物破坏数据统计的核心代码如下:

public List>buildingTj(String usid,String unitcode,String city,String county,String town,String category){

Stringhql ="select sum(t.damagehouse+0)as damagehouse,sum(t.collapsehouse+0)as collapsehouse,";

if(city!=null &&!city.equals("")){ //拼接城市查询条件

if(county!=null &&!county.equals("")){ //拼接区县查询条件

if(town!=null &&!town.equals("")){

// hql+=" and t.town='"+town+"'";

}else {

hql +="t.city,t.county,t.town from equakeinfo t where 1=1";

}

}else{

hql+="t.city,t.county from equakeinfo t where 1=1";

}

}else{

hql+="t.city from equakeinfo t where 1=1";

}

if(category!=null &&!category.equals("")){

hql+=" and t.category='"+category+"'";//震中信息查询

if(unitcode!=null &&!unitcode.equals("")){

hql+=" and unitcode ='"+unitcode+"'";//单位信息查询

}

if(category!=null &&!category.equals("")){

hql+=" and t.category='"+category+"'";

}

if(city!=null &&!city.equals("")){

hql+=" and t.city='"+city+"'";

}

if(county!=null &&!county.equals("")){

hql+=" and t.county='"+county+"'";

}

if(town!=null &&!town.equals("")){

hql+=" and t.town='"+town+"'";

}

if(city!=null &&!city.equals("")){

if(county!=null &&!county.equals("")){

hql+=" GROUP BY t.city,t.county,t.town";

}else{

hql+=" GROUP BY t.city,t.county";

}

}else{

hql+=" GROUP BY t.city";

}

return this.queryBySql(hql);

}

3.2 功能测试

地震灾情信息采集系统开发完成并成功部署,为检测系统的各项功能实现效果以及系统的稳定性能,开展了针对性的系统功能测试。利用12322地震速报短信给指定用户发送测试短信,测试用户客户端监听到短信之后,该系统立即将监测到的信息同步给安装该APP的所有用户,并发出通知消息,开始本次模拟地震灾情信息上报工作。测试用户通过APP上报灾情信息和烈度数据(图6),经过数据处理之后回传到数据库服务器中,应急指挥中心调用现场灾情数据显示在大屏幕上进行灾情展示,实现了地震灾区现场和应急指挥中心的信息互通[11]。管理员导出统计数据,共享给场外专家,专家根据所提供的数据对灾情做出判断,依据以往经验给出合理的处置建议和烈度评定意见,为应急指挥中心提供了专家意见参考。

图6 烈度上报查看Fig.6 Intensity reporting and viewing

根据灾情上报使用过程反馈,未出现系统性崩溃现象,说明该系统的稳定性是过关的,能够为地震现场的灾情采集提供稳定的系统支持。同时出于对系统和数据的安全性考虑,增加了防火墙来确保系统的安全保障,图7为测试的整个系统流程图。经过对系统的功能和稳定性测试结果来看,总体测试效果良好,达到了地震灾情信息采集系统预期建设目标。

图7 测试系统流程图Fig.7 Flow chart of the test system

4 结论与讨论

本文介绍了基于Android平台的地震灾情信息采集系统,详细地阐述了该系统设计和实现的研究过程,通过功能测试结果展示系统使用价值以及系统优越性。该系统的建设实现了地震现场灾情信息高效采集功能,使得多种灾情信息被统一上报分析,给专家提供多样化的参考数据,对现场的灾情判断和烈度评定有了更加可靠的数据支撑。同时该系统也实现了地震现场和后方指挥中心的灾情信息互通、共享,给现场的灾情采集人员提供合理规划的采集目标,大大提高灾情采集的工作效率。

地震灾情信息采集系统目前已实现地震灾区的灾情信息统计分析,给专家提供了灾情研判的数据支持,为科学救援部署和应急指挥决策提供了依据,但人工智能、深度学习等前沿技术尚未在该系统中得到应用,灾害照片、视频、语音以及非选项备注等解译工作,仍然需要人工干预来完成。下一步的研究工作,将引入人工智能分析、深度学习技术作为主要应用研究方向。

猜你喜欢

中间层烈度灾情
2022年6月全球灾情
2021年12月全球灾情
高烈度区域深基坑基坑支护设计
长庆油田:灾情就是命令
一种十七股子午胎钢丝帘线
高烈度地震区非规则多跨长联连续梁抗震分析
灾情再显城市短板
镍基高温合金TLP扩散焊中间层材料研究进展
B含量对IC10合金TLP焊接用中间层材料及接头组织的影响
318国道沿线芦山地震的震害特征与烈度区划探讨