文章快速检索    
  地震地磁观测与研究  2018, Vol. 39 Issue (6): 193-200  DOI: 10.3969/j.issn.1003-3246.2018.06.028
0

引用本文  

李丽, 蒋宏毅, 赵国峰, 等. 基于Android的地震台站信息系统研发[J]. 地震地磁观测与研究, 2018, 39(6): 193-200. DOI: 10.3969/j.issn.1003-3246.2018.06.028.
Li Li, Jiang Hongyi, Zhao Guofeng, et al. The research and development of seismic station information system based on Android[J]. Seismological and Geomagnetic Observation and Research, 2018, 39(6): 193-200. DOI: 10.3969/j.issn.1003-3246.2018.06.028.

基金项目

地震科学专业知识服务系统(项目编号:CKCEST-2018-1-11);2018年度震情跟踪定向工作任务(项目编号:2018010311)

作者简介

李丽(1982-), 女, 工程师, 硕士, 主要从事防灾减灾工程、地震数据共享等科研工作。E-mail:lili@seis.ac.cn

文章历史

本文收到日期:2018-03-02
基于Android的地震台站信息系统研发
李丽 1, 蒋宏毅 2, 赵国峰 1, 庞丽娜 1, 张格仙 1     
1. 中国北京 100045 中国地震台网中心;
2. 中国石家庄 050021 河北省地震局
摘要:为了解决地震台网加密后设备维护困难的问题,采用具有高效率的PHP Yii框架和Android开发地震台站信息系统。该软件系统建立地震台站综合数据库,对台站基础信息及相关设备进行实时查询,并集成百度导航和百度鹰眼服务。结果表明,该软件工作正常,实现最初设计功能,完善了偏远台站路径规划和导航功能,方便设备维修人员前往偏远台站巡台进行仪器维修工作。
关键词台站信息    Yii    Android    导航    鹰眼服务    
The research and development of seismic station information system based on Android
Li Li1, Jiang Hongyi2, Zhao Guofeng1, Pang Lina1, Zhang Gexian1     
1. China Earthquake Networks Center, Beijing 100045, China;
2. Hebei Earthquake Agency, Shijia Zhuang 050021, China
Abstract: In order to solve the difficult problem of seismic network equipment maintenance brought by seismic network density increase, the most efficient PHP Yii framework and Android is employed to develop seismic station information system in this paper. The software system to establish a comprehensive database of seismic stations for real-time query the station basic information and related equipment information, and integrated Baidu navigation and Hawkeye services. The results show that the software is working properly and realized the path planning and navigation for the remote station, which makes the equipment maintenance staff more convenient to go to the remote station for equipment maintenance.
Key words: Station information    Yii    Android    navigation    Hawkeye    
0 引言

随着2010年1月22日启动“国家地震烈度速报与预警工程项目”的启动,地震台网密度逐年加强,地震台站和设备数量逐年增长。因台站建设的环境需求造成大多数台站位置较为偏僻,设备维修人员日常巡台工作比较困难。目前几款主流导航软件不能满足需求,给日常巡台外业工作带来不便,基于Yii+Android开发的地震台站信息系统可解决此问题。

根据市场调查机构Kantar发布的2015年移动市场统计报告,Android系统在全球应用中占有主导性优势。在中国,Android市场占有率达到74%的份额,而IOS只有24.4%。另外,Windows Phone占有一定比例,但在中国份额仅1%。从数据看,Android平台主导移动产品市场,因此,基于Android平台开发的应用是移动市场主流。

Android是基于Linux系统(朱生等,2013杨单等,2016)内核开发的移动操作系统,由应用程序层、应用程序框架层、中间件层和操作系统层4层叠层方式构建而成(耿东久等,2011)。Android系统(周辉等,2017)的叠层结构与当今主流Web开发中MVC架构设计思想一致,层与层之间完全透明,上层应用无需关心下层代码实现,可有效降低系统耦合性。手机终端和平板电脑携带方便,性能强大,日益深入人们的日常生活和工作,随着智能手机和平板电脑的不断发展,移动终端办公软件应用成为现代化办公的发展趋势。

1 系统设计

在Android平台上设计开发基于Yii架构(岳雨俭等,2014)的地震台站信息系统。服务器采用MVC架构进行设计(刘宁等,2008),客户端采用Afinal框架,FinalHttp是网络通讯类,负责与服务器进行数据交互,通过Http请求(“GET”和“POST”)告知服务器客户端请求;服务器将请求地址分派到控制器,控制器整合参数,并传递到业务逻辑层进行处理;数据服务层负责数据库操作;业务逻辑层将处理结果返回Android客户端。系统设计分为数据库、服务器和客户端3部分,见图 1

图 1 功能框架 Fig.1 The function frame

创建地震台站信息综合数据库,信息包括:台站位置(经纬度)、设备信息、联系人等。服务器运行台站信息系统后台程序,用于响应客户端操作和数据库更新、管理等。客户端用于查询地震台站信息和相关设备信息,还可以实时查询设备网络连通状态。

1.1 数据库

数据库设计是系统根基,直接影响系统运行效率和运行成本。通过对测震台站、强震台站、烈度台站、前兆台站和信息网络节点等台站信息以及设备信息进行分析,建立基于MySQL的数据库。本系统共建立13个数据表,包括:测震台站信息表、测震设备信息表、信息节点台站信息表、信息节点设备表、前兆台站信息表、前兆台站测点信息表、前兆台站仪器运行信息表、前兆台站测项分量信息表、终端用户表、鹰眼记录表、经纬度修正表、设备断开记录表、设备状态表。数据库表说明见表 1

表 1 数据库表说明 Tab.1 The equipments table of database

为了保证数据的完整性和一致性,前兆数据通过数据库同步模块与前兆管理系统数据库完全同步。

1.2 服务器端

系统开发环境采用php5.4 + apache + yii4.6架构(龚成莹等,2013周娜等,2014)。Yii是基于组件的高性能PHP5的Web应用开发框架,采用OPP(面向对象程序设计),组件功能丰富,包括:MVC、Web服务、widgets、DAO/ActiveRecord、caching、到主题化、等级式RBAC、I18N和L10N等,可以满足现今各种大型Web 2.0项目的应用开发。

Yii除采用主流的MVC(刘亚鹏等,2011)分层方法,还拥有一个前端控制器(应用),是指请求处理中的执行上下文。通过分析用户请求,并将其分派给相应控制器,以作进一步处理。图 2展示了一个Yii应用在处理用户请求时的典型工作流。

图 2 Yii应用工作流 Fig.2 The workflow of Yii application

其中:①用户在浏览器中访问URL:“http://xxxx/index.php?REQUEST_PARAMETER”,REQUEST_PARAMETE为请求参数,如本例中设置为“r=post/show&id=1”,Web服务器收到请求后,立即执行index.php入口脚本,并处理此请求(request)。当用户通过客户端(浏览器)向Web服务器发送请求时,用户请求信息通过客户端(浏览器)返回Web服务器;②Web服务器接收用户请求后,通过入口脚本(index.php)为用户创建应用实例;③应用实例(application)被创建后,通过request应用组件获取用户请求的REQUEST_PARAMETER(请求信息);④urlManager为应用处理组件,通过用户请求的URL和REQUEST_PARAMETER解析相应路由,即相应Controller(控制器)和Action(操作)。如本例中REQUEST_PARAMETER的post参数决定了请求控制器为post,通过PostController类创建控制器实例;⑤控制器实例被创建后,决定了Action的相关内容,即“show”操作,是控制器中的actionShow方法。Action被定义后,控制器创建并执行与其相关的filters(过滤器)实例,如:用户权限验证、访问控制、系统日志、异常处理等,若过滤器实例允许Action操作,则Action操作将被进一步执行;⑥控制器实例被创建后,作为一个分发器,根据用户请求来选择相应服务器对象(Model)和相应视图(View),不做数据处理,而是将业务逻辑交给Model进行处理。Model即为MVC架构核心,负责业务处理,最终返回视图数据请求。本例中Action创建了ID为1的Post模型;⑦服务器对象被创建后,根据视图请求,创建相应模型,Action通过该模型渲染一个视图(根据Post模型渲染一个show视图);⑧视图解析器(View)接收控制器发送请求,并将逻辑视图名称映射到相应视图显示文件上。如本例中,视图读取并显示Post模型属性;⑨通过控制器获知显示结果的视图文件,该视图通过模板数据(widget)产出结果,并通过response对象返回;⑩布局将进一步渲染response对象,并将结果返回视图。由Action完成视图渲染,将结果返回用户端。

1.3 客户端

基于Android4.0(level 14)以上(朱小凡等,2013)版本,采用ADT为开发环境,选择JDK1.6版,在客户端嵌入百度地图(龙际梦等,2015)。百度地图SDK提供便捷地图数据接口,加载百度地图操作步骤具体如下。

(1)AndroidManifest配置。在AndroidManifest配置文件中添加开发密钥、权限等信息,代码如下

<meta-data android:name=" com.baidu.lbsapi.API_KEY" android:value=" 开发者key" />。

其中:开发者key在申请开发者身份后获取。

(2)添加所需权限。格式为 <uses-permission android:name=" 权限名称"  />,权限信息见表 2

表 2 权限信息列表 Tab.2 The information table of authority

以上仅为Android平台上百度地图api开发的常用权限配置(赵国峰等,2014杨单等,2016),更多配置可参考百度地图api开发文档。

(3)添加地图控件。布局配置文件,代码如下

<com.baidu.mapapi.map.MapView

android:id=" @+id/bmapView"

android:layout_width=" fill_parent"

android:layout_height=" fill_parent"

android:clickable=" true" />

其中:“@+id/bmapView”为视图ID;“fill_parent”为地图布局设置,一般采取强制性满屏布局设置;“clickable”为是否允许点击。

(4)地图Activity。在创建应用程序时,初始化SDK引用Context全局变量,创建地图Activity,并管理地图生命周期,代码如下

public class MainActivity extends Activity {

MapView mMapView = null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_main);

//获取地图控件引用

mMapView = (MapView) findViewById(R.id.bmapView); }}

其中:在使用SDK各组件初始化之前,通过getApplicationContext方法获取context信息,初始化工作完成后,通过setContentView方法实现引用。MapView是地图的视图类,可以响应屏幕触控事件,与服务器端进行地图数据的交互。此类中有4个生命周期操控方法,并必须按顺序执行,见表 3

表 3 权限信息列表 Tab.3 The authority table of MapView
2 关键技术 2.1 设备监听服务

设备监听服务是本系统核心业务,监听服务结果分别保存在设备状态表和故障记录表中,表格参数见表 4表 5,其中设备状态表记录设备最新状态;当设备发生故障(网络中断)时,系统将本次故障作为事件进行记录,即将故障发生的事件ID、开始时间、结束时间、故障持续时间以及设备ID记录在故障记录表中。设备状态及故障记录表中的状态标识同步更新。

表 4 设备状态表 Tab.4 The status information table of equipment
表 5 故障记录表 Tab.5 The breakdown information table

设备监听服务工作流程见图 3,主要流程如下:①服务初始化:读取设备状态表,获取设备状态标识、事件ID;②向设备发送状态请求;③接收设备状态回复,并与状态标识对比;④若相同,继续步骤②;⑤若statusflag为up,设备状态回复为down,则在故障记录表中添加一条新记录,记录事件ID、设备ID、开始时间,并将状态标识设置为down。若statusflag为down,设备回复为up,修改故障记录表中相应事件ID的结束时间和故障时间,并将状态标识设置为up,同时更新设备状态表。

图 3 监听服务工作流程 Fig.3 The listening service workflow

本系统主要对设备网络联通性进行监测服务。测震数采设备记录实时数据流,对网络联通性要求高,若链路发生中断或线路阻塞,必须第一时间进行故障响应处理。前兆数采设备能保存一段时间的数据,对网络联通性要求不高,一般为定时自动上传数据,当连接发生中断后,设备会自动连接服务器,并上传数据。另外,地震行业有些数据通过3G无线网络传输,数据传输按流量计费。

监听服务的响应时间和所需资源成正比,即监听服务的响应时间越高,监听服务占用的系统资源越大。因此,针对设备网络联通性的不同需求,分别设置秒级、分钟级和小时级监听服务,具体说明见表 6

表 6 监听服务说明表 Tab.6 The listening service table

设备监听服务采用队列方式对设备发送状态请求,工作原理见图 4。由图 4可知,服务对设备状态的判断需要设备对监听服务做出回复,设备正常,回复监听服务时间一般约1 s;若设备未对监听服务做出正常回复,则认为该设备的网络链路发生故障。由于网络链路瞬间阻塞,网络设备通常发生瞬断,故障时间一般1—2 s。瞬断故障发生时,链路基本正常,此时响应故障机制显然不合理,因此在设备监听服务中增加故障判定机制。故障判定机制的处理结果一般需10 s返回请求结果,若故障判定机制也在设备监听服务队列中进行处理,则必然影响整体监听服务工作效率。

图 4 设备监听服务工作原理 Fig.4 The working principle of listening service
2.2 鹰眼服务

地震台站位置往往比较偏僻,尤其是测震台站和强震台站,有些台站甚至部署在山洞中,通过百度导航无法搜索到有效路径。因此,本系统引入百度鹰眼服务,通过记录路径轨迹,从而实现对偏远台站的路径规划和导航。鹰眼服务记录工作流见图 5

图 5 鹰眼服务工作流 Fig.5 The hawkeye workflow

本系统一般在4G网络环境下工作,为了节省流量,降低通信费用,鹰眼服务非自动开启,只在导航功能启动时自动开启,导航服务结束后自动关闭,并保存鹰眼路径信息。鹰眼记录的路径数据保存在百度服务器上,每次调用轨迹数据时,需通过鹰眼记录时间签向百度服务器发送请求,从而获取路径信息。

3 应用效果

地震台站信息系统包括服务器程序、客户端程序、数据库3部分。建立地震台站综合数据库,包括测震台站、强震台站、烈度台站、前兆台站以及信息节点相关信息,而且建立设备信息数据库及台站信息查询机制。系统支持分类查询、详细查询和模糊查询3种查询模式,如图 6所示,分别展示台站和设备的查询结果,其中:左图显示河北省前兆地磁台站查询结果,右图显示台站设备及状态查询结果。

图 6 台站列表和设备列表截图 Fig.6 The screenshot of station and equipment

3G网络和GP环境支持定位功能,可以直接查找台站位置,实现路径规划和导航功能。引入百度鹰眼服务,可增强偏远地震台站路径规划和导航功能。如河北省寨主沟地震台地处山区,位置偏僻,使用百度地图及添加鹰眼服务进行路径规划,路径导航截图见图 7,可见百度路径规划不完整(左图),而鹰眼服务路径规划规划完整(右图)。

图 7 路径导航截图 Fig.7 The screenshot of navigation
4 结束语

智能手机的数据处理能力和存储性能越来越强大,因其便捷性、灵活性以及易用性等特点,将逐渐成为日常办公的主要工具。

本研究尝试将地震业务应用在手机终端,使用效果明显,今后将就以下需求进一步开发,包括:①除监测设备网络状态外,进一步研究设备通讯和数据服务协议,实现对设备的数据服务、流服务进行监控;②进一步开发设备故障警报机制、故障报送机制;③进一步研究流体、形变、电磁等学科业务,研究学习各学科数据处理业务,以手机终端为控制台,远程调用业务数据服务,实现业务处理。

参考文献
耿东久, 索岳, 陈渝, 等. 基于Android手机的远程访问和控制系统[J]. 计算机应用, 2011, 31(2): 559-561.
龚成莹, 邢敬宏, 胡银保. 基于JSON的android移动终端与PHP及MySQL数据通信[J]. 工业仪表与自动化装置, 2013(1): 63-65. DOI:10.3969/j.issn.1000-0682.2013.01.018
刘宁, 陆荣国, 缪万胜. MVC体系架构从模式到框架的持续抽象进化[J]. 计算机工程, 2008, 34(4): 107-110.
刘亚鹏, 张征, 俞婷. 基于MVC多层架构的Web应用框架设计[J]. 微计算机信息, 2011, 27(7): 169-171. DOI:10.3969/j.issn.2095-6835.2011.07.067
龙际梦, 刘宏建, 蔡中祥, 等. 主流网络地图应用开发API技术研究[J]. 北京测绘, 2015(3): 79-82. DOI:10.3969/j.issn.1007-3000.2015.03.021
杨单, 何建安, 伍振华. 一种基于Android平台的智能导游系统[J]. 电子商务, 2016(2): 57-59. DOI:10.3969/j.issn.1009-6108.2016.02.028
岳雨俭, 尹柯, 吴观茂. 一种基于YⅡ框架移动编程通信接口的设计于实现[J]. 计算机与数字工程, 2014, 42(12): 2428-2432. DOI:10.3969/j.issn1672-9722.2014.12.046
赵国峰, 李丽, 李永红, 等. 12322地震速报短信服务系统设计与实现[J]. 地震研究, 2014, 37(1): 157-162. DOI:10.3969/j.issn.1000-0666.2014.01.023
赵国峰, 李鑫, 李丽, 等. 中国地震信息网速报信息实时同步设计与实现[J]. 震灾防御技术, 2014, 9(2): 310-316. DOI:10.3969/j.issn.1673-5722.2014.02.017
周辉, 王文青, 赵峰, 等. 基于Android的跨断层测距记簿程序的开发[J]. 现代电子技术, 2017, 40(1): 17-19.
周娜, 康凯, 李丽, 等. 中国地震信息网移动互联网服务研究与设计[J]. 地震研究, 2014, 37(3): 484-488. DOI:10.3969/j.issn.1000-0666.2014.03.024
朱生, 牟星亮, 单康康. 基于Android平台的应用程序开发研究[J]. 网络安全技术与应用, 2013(10): 46-47. DOI:10.3969/j.issn.1009-6833.2013.10.031
朱小凡, 梅明, 熊婷, 等. Android移动终端与服务器数据传输的研究[J]. 武汉冶金管理干部学院学报, 2013, 23(1): 66-70. DOI:10.3969/j.issn.1009-1890.2013.01.022