流动测震观测是地震加密观测及震后快速恢复观测的重要手段。强震发生后,极震区大量地震观测设施容易遭到破坏,且后续余震频繁发生,为记录发生的余震,增强测震台网监测能力,要求地震部门架设流动测震台站,快速恢复震区地震观测。在流动台站实际架设过程中,需要携带多种辅助设备,如定位、图像采集、方向确认等工具,造成架设过程复杂、机动能力差等问题,而且流动测震设备种类繁多,工作性能参数各异,库存管理工作繁重,要求在流动台站架设、参数上报、设备管理上高效、便捷、简单。为此,需求一套基于移动互联技术的信息采集管理系统,提高流动测震台站架设速度,加强设备、人员的信息管理。
随着智能移动设备的普及和硬件设备性能的提升,基于Android平台的APP应用程序被大量用于日常生活和工作。作为流动测震台网综合管理系统前端现场信息采集软件,基于Android平台开发,集成诸多辅助架台工具功能,可提高架台效率,简化架台操作过程。后台程序采用PHP语言开发,实现对前端采集台站信息、库存设备信息、人员信息的管理,使流动测震台网工作效率得到提升,同时保障台站设备参数配置准确、可靠。
1 系统介绍流动测震台网综合管理系统由前端信息采集层、网络传输层、数据管理层、后台应用层构成。其中,前端信息采集层自动获取经纬度,并通过自带的拍摄功能获取架台外部环境信息,利用手持终端自带的电子罗盘功能确定地震计架设方位等;网络传输层采用VPN路由器,实现VPN基本配置,通过虚拟VPN网络,实现内外网数据交换;数据层用于存放前端采集现场各类信息及设置参数,并提供后台程序调取,新添加设备信息也会存储至数据层供前台调用;后台应用层提供流动台站信息查询功能,方便管理员对设备、人员、参数信息进行维护,并显示台站点位信息。综合管理系统工作流程见图 1。
Eclipse作为一个源代码开放、基于Java的可扩展开发平台,用于流动测震台网综合管理系统前端信息采集软件开发,使用Android SDK开发工具,实现手机APP程序的开发(高嘉伟等,2016)。Android SDK工具为方便软件开发,提供可视化模拟器,用于查看手机应用程序运行。应用前端现场信息采集APP程序,通过一部手机即可完成GPS手持机、指北针、照相机以及纸质架台日志的功能,便于实现与流动测震台网中心之间的数据交换。
1.2 数据库流动测震台网数据库主要用于存储流动台站、设备参数、设备状态及人员等信息。在充分考虑系统需求和成本前提下,采用可跨平台使用的MySQL数据库作为流动测震台网综合管理系统数据库。MySQL作为世界流行的开源数据库,是完全网络化的跨平台关系型数据库系统,利用phpMyAdmin第三方图形化管理软件进行数据库和相关数据表的搭建。文中将数据库命名为db_flowsystem,包含的数据表信息见表 1。
后台管理系统软件采用B/S结构,利用Smarty架构和Ajax技术进行系统设计,使用PHP语言进行动态页面设计。利用Ajax技术,可在后台与服务器进行少量数据交换,实现网页的异步更新,即可在网页不重新加载情况下,对某部分进行更新(于天恩,2007;潘凯华等,2011)。PHP语言将程序嵌入HTML文档中执行,执行效率比完全生成HTML标记的CGI高,使用浏览器实现程序的访问和应用,可在一定程度上降低系统程序的维护难度。
系统管理员通过流动测震台网综合管理后台程序,完成架台人员、流动设备等基本信息的录入,查询流动设备工作状态、设备库存及流动台站使用或撤销等信息。
2 软件开发 2.1 前端程序开发基于Android平台开发前端手持终端应用程序,使终端设备具备流动台站位置信息自动获取、现场图像信息采集等功能,同时通过VPN路由将参数信息传输至数据层,由后台管理员调取使用。在程序开发过程中主要涉及以下关键技术。
(1)地理编码。地理编码可在街道地址和经纬度地图坐标之间进行转换。因此,在流动测震台网综合管理系统前端采集软件开发中,可以利用基于位置的服务和基于地图的Activity中使用的位置识别,提供架设流动测震台站的经纬度信息。因Geocoder类包含在Google Maps库中,使用Geocoder类需要把Google Maps库导入应用程序(Meier,2013)。为此,在应用程序开发过程中添加节点uses-library,如下所示
<uses-library android:name=”com.google.android.maps”/>
地理编码查找在服务器上进行,查询结果将放到一个区域中。因此,在软件开发过程中应指定区域。利用Forward Geocoding查找的经纬度坐标以列表形式存放在指定区域。信息采集软件功能界面见图 2。
(2)地震计方位确定。前端信息采集软件提供对地震计方位的确定功能。确定设备方向的简单方法是,直接使用加速计和磁场传感器的结果进行计算。除可以提供更精确的结果,该技术能够更改方向参考坐标系,以便重新映射x、y、z坐标轴,从而使其适应用户所期望的设备方向。该方法使用了加速计和磁场传感器,需要创建并注册一个传感器事件监听器用以监视二者。在每个传感器事件监听器的onSensorChanged方法中,记录2个单独域变量中的接收值。
(3)摄影功能。为了能够快速将现场流动台站架设图像信息传输至流动台网中心,前端信息采集软件利用手机摄像头拍摄图像并上传至服务器指定路径。为了在应用程序中实现摄影功能,通常使用MediaStore.ACTION_IMAGE_CAPTURE动作发出一个Intent,代码如下
startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), TAKE_PICTURE);
该Intent将启动照相机程序进行拍摄功能,若现场架台人员满意所拍摄的照片,通过onActivityResult处理程序,将接收的Intent返回应用程序(刘军等,2014)。通返回缩微图,为获取完整图像,必须指定路径用于存放。
2.2 后台管理程序开发基本信息管理功能模块包含人员、设备及台站信息3个二级功能模块。管理员通过以上3个功能模块,实现对设备、人员、台站信息的增加、删除以及修改。同时,前端信息采集模块将现场流动台站信息同步至该功能模块下,可第一时间查询流动台站工作状态。管理员可通过系统自动查询数据库tb_stationinfo数据表中endtime是否赋值,实现对流动测震台是否使用的判断。即查询台站信息列表中的状态项,若状态信息栏为红色,表示该台站已撤销,绿色则表示在使用。台站信息使用界面见图 3。
在台站信息基本信息界面中,用户通过点击详情链接,获取该流动测震台详细信息,包括台站基本信息、使用设备基本信息、网络配置信息和图片信息等。利用PHP提供的move_uploaded_file()函数,实现现场架台图像信息的自动上传(孙路强, 2015, 2016),并同步显示至台站基本信息界面中。流动测震台站详细信息界面见图 4。
为了方便用户快速查询流动测震台站分布和点位地理信息,该系统提供台站矢量分布图,使用百度地图API进行二次开发,自动绘制流动测震台站分布图,通过调用javascript程序,利用JSON实现百度地图的调用。JSON作为一种轻量级数据交换格式(胡斌等,2014),实现经纬度数据在不同开发语言间的交换。百度地图API的二次开发提供点位快速查询功能,流动测震台站架台人员可快速规划行进线路,查看台站周边主要干扰源、人口聚集地等。流动台站分布查询界面见图 5。
天津流动测震台网综合管理系统2017年7月投入使用,现阶段共录入流动测震设备信息104套,形成设备信息库存列表,管理员通过库存信息判断设备是否可用,可用设备状态是否良好等属相。同时,系统后台管理系统与前端信息采集软件之间形成数据交换,共享台站信息、设备信息等。在台阵观测项目中,前端基于Android的信息采集软件用于场地堪选仪器架设过程,流动台站信息实时传输至省地震局台网中心。应用天津流动测震台网综合管理系统,可提高台站架设的整体效率,便于对台站基础信息和网络配置信息的管理。
4 结束语基于PHP语言开发的流动测震台网综合管理系统,去掉程序安装环节,管理员和架台技术人员通过浏览器即可访问系统并使用各功能模块,利用VPN路由,实现内外网之间的数据交换,作为基于移动互联技术的手机软件,在地震观测技术应用中,对于提高观测质量和效率起到不容忽视的作用。
高嘉伟, 李娟, 李帮辉. 基于Android的地震速报软件设计与实现[J]. 计算机应用与软件, 2016, 33(5): 212-214, 230. DOI:10.3969/j.issn.1000-386x.2016.05.053 | |
胡斌, 董一兵, 刘新, 等. 基于百度地图API的测震台网电子地图服务系统的设计与实现[J]. 地震研究, 2014, 37(2): 312-316. DOI:10.3969/j.issn.1000-0666.2014.02.022 | |
刘军, 宋立军, 兰陵, 等. 基于Android平台的灾情速报系统在于田7.3级地震中的应用[J]. 震灾防御技术, 2014, 9(4): 915-920. | |
潘凯华, 刘中华. PHP开发实战1200例(第Ⅰ卷)[M]. 北京: 清华大学出版社, 2011: 160-167. | |
孙路强, 刘磊, 栗连弟, 等. 基于PHP语言的天津市测震台网综合管理系统的研制[J]. 地震工程学报, 2015, 37(Z1): 108-113. DOI:10.3969/j.issn.1000-0844.2015.z1.021 | |
孙路强, 刘磊, 朱宏, 等. 天津环渤海虚拟台网地震数据管理平台[J]. 地震地磁观测与研究, 2016, 37(6): 126-132. DOI:10.3969/j.issn.1003-3246.2016.06.023 | |
于天恩. PHP精解案例教程[M]. 北京: 清华大学出版社, 2007: 231-237. | |
Meier R. Android 4高级编程[M].佘建伟, 赵凯译.北京: 清华大学出版社, 2013. |