刘细梅,高光明,牛振国,郭子祺
(1. 中南大学 地球科学与信息物理学院,湖南 长沙 410083;2. 中国科学院 遥感应用研究所,北京 100101)
村镇环境监测是我国环境保护非常重要的内容[1,2],及时、准确地对环境污染的各类信息进行监测和收集,对于环境治理和社会应急决策具有重要的意义。目前, 环境污染的调查采用实地调查记录、测试,然后带回数据中心进行分析处理和上报。这种模式一方面不能支持环境污染信息的实时共享,另一方面也往往把污染区域的地理环境等背景信息割裂开来,不利于污染源的分析和监测[3-9]。当前移动技术的发展为手机、PDA 等移动设备进行数据采集和实时传输提供了技术支持[10]。因此,本文提出集PDA、移动GIS技术于一体,基于Android操作系统的村镇环境污染现场监测信息移动收集系统。
本系统总体上设计为C/S架构。客户端(智能手机)负责前台界面显示和信息采集,服务器负责数据接收和存储。为完成系统各功能模块的开发,首先建立了Android SDK18 + Java JDK 7 + Eclipse 4.2+ArcGIS Server10+ArcGIS API for Android 2.0 的开发环境,基于Android 4.0 版本开发。本系统测试环境为:服务器Acer,操作系统Windows XP,数据库系统MS SQL Server 2008。客户端采用三星GT-P3110(Android 4.0系统,硬件配置为双核1 GHz CPU,RAM 1 GB,ROM 8 GB,7 英寸TFT电容式多点触摸彩色屏幕),WiFi 网络。
本系统分为支撑层、数据层、服务层、应用层、用户层5部分,如图1。
1)支撑层。包括基础软硬件环境,如Android平台智能手机、传感器,相关标准与规范体系等。
2)数据层。根据系统需求,建立满足服务所需的数据体系,核心是基础地理数据库和应用专题属性数据库,包括有基于MS SQL的数据中心、移动端SQLite本地数据库、基于ArcGIS Server缓存发布的地理信息。
图1 系统架构
3)服务层。为不同角色用户提供相应采集点数据管理、在线使用和二次开发需求,向应用层提供所需的各种应用服务,如地图操作服务、数据管理服务、数据接口服务等。
4)应用层。为用户提供多种应用,包括实现有关村镇环境污染监测点定位污染等信息的采集、传输、管理、在线统计分析以及为第三方软件或硬件提供数据接口等,同时支持在离线地图上对监测信息的显示等。
5)用户层。与村镇环境污染监测有关的各类用户,包括政府、企业、公众等。这个层面需要实现用户统一身份认证和应用系统单点登录。
客户端功能主要分为数据管理、数据查询、信息查询、地图服务、用户管理、上传数据、数据存储模式设置,如图2。
经登录验证的用户进入系统,通过数据存储模式设置可以指定当前采集的数据上传模式。数据上传分为在线实时上传和离线存储:在线实时上传模式是在采集地点3G信号或WiFi网络连接状态良好的情况下,将采集的数据即时传输并存储于服务器端;离线上传是在采集地点无3G或WiFi信号或中断的情况下,将采集的数据暂时存储于本地,待恢复网络后再将数据上传至服务器端。为此,系统专门设计了“上传数据”的功能。
图2 客户端功能框架
考虑到数据在传输过程中的安全,本系统底层通信协议为TCP的HTTP。结合J2EE平台跨操作系统特性,选用Tomcat服务器,采用JDBC驱动链接数据库。在J2EE平台上响应HTTP Request的是Servlet,一个Servlet对应一个url。网络传输中数据采用JSON格式,易于阅读和编写,同时也易于机器解析和生成,对计算和带宽的占用居中[11,12]。
服务器端负责处理与移动客户端的链接,将移动客户端上传的变更数据上传至中心数据库,也负责把中心数据库的最新数据传输给移动客户端本地数据库中,同时为第三方软件或硬件提供采集点信息的Web Service技术接口。
采集点数据主要是空间信息、污染物信息、采集人员信息、采集时间、图片、视频等信息。利用智能手机的GPS功能自动获取空间信息,然后与其他相关信息一起采集并提交至服务器端。采集流程如图3,用户界面见图4。
图3 污染信息采集流程图
图4 采集点信息采集界面
1)定位信息获取。首先通过getSystemService()来获取GPS 服务,然后注册一个位置更新的事件监听器,再调用其位置更新服务的方法requestLocationUpdates()获取实时的卫星数据。在该方法中有一个事件监听器LocationListener 参数,其中有一个Location 类,存放实时获取的卫星数据,通过调用这个类的有关方法便可得到当前的经纬度、海拔等信息[13-15]。
2)图片视频采集。用户可选择“从视频库中选择照片”或“录像”。如果选择“录像”,系统会自动调用智能手机的录像功能,利用Intent的putExtra方法来完成录像,并将视频自动保存在SD卡指定目录下。图片采集过程与视频采集类似。
采集点数据信息的查询可根据地区编码、采集人、采集时间条件组合来进行查询,查询结果通过ListView显示。本系统实现的ListView表格中,每个格单元可以大小不一,文本或图片做单元格的数据,不需预先定义XML实现样式,有利于代码的重复利用。其中ListView中自适应实现table类,具体实现由TableCell->TableRow->ListView。
对于查询结果中的图片与视频可以通过点击单元格进行查询或播放。其重点是在ListView点击响应事件setOnItemClickListener中通过方法getChildAt获取相应的单元格数据,以对话框形式显示图片或播放视频[16]。
1)显示地图。本系统中使用的是经ArcGIS Server动态缓存发布并存放于智能手机外置卡指定目录中的地图数据,在ArcGIS提供的MapView控件中添加ArcGISLocalTiledLayer即可显示地图。
2)显示当前采集点。在设置地图状态改变监听事件setOnStatusChan-gedListener中,新建GraphicsLayer与Point,利用 GeometryEngine类的project方法将点坐标投影到地图上,并新建Graphic对点进行渲染,最后将Graphic添加到GraphicsLayer中,即可以将采集点显示在地图上[17]。
3)预警。移动端用户可以根据需要组合条件查询服务器端采集点数据并简单地统计分析污染程度,并通过地图直观展示。
为测试该系统的采集、上传与分析等功能,进行了初步测试应用。野外测试采集过程中采用离线存储模式,将数据临时存储于Sqlite本地数据库,并实时查看采集人员在地图上的位置显示;待回到室内恢复WiFi网络信号后,启用“上传数据”功能,将存储于本地的污染信息上传至服务器端,同时清除已经上传成功的临时数据,并查询服务器端数据。
测试结果验证了利用基于Android操作系统、集GPS、GIS于一体的智能手机采集村镇环境污染信息并上传到服务器的可行性, 实现了手机客户端与服务器端之间的交互。该系统操作简便,能够快速地进行野外污染源数据的获取与传输,提高了污染源数据的采集效率。
[1]冯欣,师晓春.农村水环境污染现状及治理对策[J].环境保护与循环经济,2011(5):40-42
[2]张笑归,刘树庆,宁国辉,等.我国农村环境污染现状及其对策研究[J].河北农业科学,2009(13):100-102
[3]王华.土地利用变更的土壤及地下水污染调查方法及实例[J].环境污染与防治,2005,27(3):221-224
[4]金春久,李环,蔡宇.松花江流域面源污染调查方法初探[J].东北水利水电,2004(6):54-55
[5]刘景涛,孙继朝,黄冠星,等.区域地下水污染调查评价野外调查方法浅议[J].地下水,2008,30(2):60-61
[6]文冬光,林良俊,孙继朝,等.区域性地下水有机污染调查与评价方法[J].中国地质,2008,35(5):814-819
[7]张照录,崔继红,张录强,等.农村生活污染特点与快速调查方法[J].安徽农业科学,2011,39(22):13 656-13 657
[8]刘雪松,蔡五田,李胜涛,等.石油类污染场地土壤与地下水污染调查实例分析[J].水文地质工程地质,2010,37(4):121-125
[9]龚海明,马瑞峻,汪昭军,等.农田土壤重金属污染监测技术发展趋势[J].中国农学通报,2013,29(2):140-147
[10]吴考琴,齐华,朱军.Java手机在污染源数据采集中的应用研究[J].微计算机信息,2010,26(5):93-95
[11]邵珠光,赵秋生,景治伟,等.Android平台下居民信息录入系统的设计与实现[J].国际生物医学工程杂志,2012,35(1):46-49
[12]黄东.基于SQLite的移动嵌入式数据库同步系统的研究和开发[D].武汉:华中师范大学,2009
[13]胡刚林.G/S数字旅游移动服务模式研究与应用[D].成都:成都理工大学,2010
[14]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011
[15]郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010
[16]贾文杰,孙志锋.基于Android平台的智能导游系统[J].机电工程,2011,28(10):1 257-1 259
[17]周靖雄,陈友飞.基于ArcGIS Android API的GPS手机导航系统关键技术的研究与实现[J].数字技术与应用,2012(4):45-46