2. 中国地质大学(武汉) 计算机学院, 武汉 430074;
3. 中国地质大学(武汉) 智能地学信息处理湖北省重点实验室, 武汉 430074
2. School of Computer Science, China University of Geosciences (Wuhan), Wuhan 430074, China;
3. Hubei Key Laboratory of Intelligent Geo-Information Processing, China University of Geosciences (Wuhan), Wuhan 430074, China
野外地质数据采集作为地理信息系统中重要的部分, 是开展地质研究的基础, 其质量直接影响解释结果与客观实际的接近程度[1–6]. 野外地质数据具有类型繁多、信息量庞大、内容复杂、以描述性信息为主、受人为因素以及其他因素的影响等特点, 传统的野外地质数据采集工作是使用野簿记录, 地质人员将采集到纸质数据带回去并对其进行数字化成为电子文件或将其存入数据库中, 通过纸质数据与原图进行比较来检查. 具有记录内容随意、格式不规范以及使用不方便等缺点, 数字化过程繁琐也会降低数据采集的质量和准确性, 容易存在数据质量问题, 难以满足地学定量化和地矿信息化的要求[7,8]. 传统的掌机具有轻便与省点的优点, 但其内存小, 一般只有32 M, 处理图形能力差, 只适合记录文字信息, 无法满足记录大量的地层、构造以及矿产等属性信息以及遥感影像、素描与数码照片等数码信息的实际工作需求[9,10]. 智能化的数据采集系统主要是基于掌上电脑(PDA)的野外采集系统, 通过将PDA集成在某种仪器设备上, 用户可以通过设备原装软件进行数据处理, 从而将GPS与GIS系统结合, 实现地质数据采集数字化, 但其价格高昂, 功能受硬件约束较大, 在全面性与易用性上存在不足.
随着移动通信网络的快速发展和移动电子设备的快速升级, 移动设备的普及性得到极大提高, 尤其是近几年井喷式的发展, 基于Android平台的智能设备因具有用户数量大、应用场景多、开发成本低、携带与充电方便等优势, 得到了广泛的应用.
本文基于开源的Android平台, 集成World Wind地图技术、网络通信技术、多线程技术和数据存储技术, 针对野外地质采集工作中存在的步骤繁琐、效率低、工作周期长等问题, 研发了一种基于World Wind移动端的地质数据野外采集系统, 充分利用移动互联网的普遍性与便捷性, 实现野外地质工作的信息化采集、浏览和展示, 为地质研究工作人员提供便捷的数据录入方式, 提高野外地质数据采集的工作效率.
2 系统设计 2.1 系统设计分析地质数据野外采集系统主要针对的用户群体为从事地质勘查数据采集的研究工作人员, 考虑到用户群体的特殊性, 需要对系统进行性能、可靠性、可扩展性等需求进行分析. Android系统已经较为完善, 但由于国内基于World Wind移动端开发的例子很少, 依据实际业务需求, 在系统设计与实现中需要解决以下3个难点: (1)系统健壮性与可扩展性. 考虑到移动智能设备的迅速升级和地质工作信息化的进一步推进, 系统需要随着业务的更新与设备的升级进一步优化, 不仅要求能够灵活修改已有的功能模块, 还要求能够方便添加新的功能模块. (2)基于北斗/GPS和移动网络的综合定位策略. GPS定位精度高, 但是获取定位的时间较长, 同时对所处地形和所在区域的卫星数量有一定要求; 移动网络的定位精度较低, 但是获取定位的时间较短. (3)基于World Wind移动GIS图形编辑、导航及投影研究.
通过分析, 针对以上问题分别提出的解决方案如下: (1)系统需要较大的冗余空间, 充分采用模块设计模式, 为将来的功能扩展和系统升级优化做好铺垫. (2)建立北斗/GPS与移动网络结合的综合定位策略, 在定位过程中, 当无法通过GPS定位时, 通过移动网络获取定位, 当获取到GPS定位后, 用GPS定位替换移动网络定位.在此基础上, 基于移动GIS的可视化采集用户接口, 实现结构化与非结构化的原始数据在矢量化地质底图的实时定位录入. (3)World Wind移动端开发包括基于空间库的地质底图数据组织与配置, 基于移动端World Wind控件的开发, 以及图层管理、自定义图形、地图标注、属性查询、空间查询及空间量算与空间分析[11].
2.2 系统体系架构整个系统分为用户界面层、逻辑功能层和数据访问层, 如图1所示. 用户界面层为用户提供友好的图形交互界面, 包括界面显示、地图加载显示和数据对话框展示等; 逻辑功能层是针对某种特定的业务需求提供完整的逻辑功能, 包括移动设备的触屏基本操作、数据编辑、数据上传和数据更新等[12]; 数据访问层用于对数据进行访问、管理及标准化. 通过响应用户的请求, 形成相应的检索语句, 对用户所采集的数据进行数据库增删改查等管理操作.
2.3 功能模块设计地质数据野外采集系统旨在辅助地质研究工作人员在野外便捷、精确地采集各种地质勘查数据, 因此在采用模块化设计模式的基础上, 系统主要分为GPS/北斗定位模块、地球三维展示模块、可视化数据录入模块、数据导出模块、可视化数据编辑模块、移动GIS地质实体投影模块和移动GIS地质实体导航模块, 总体功能结构如图2所示.
2.3.1 定位模块定位模块通过北斗/GPS卫星导航系统结合移动基站进行目标地的定位与位置信息获取, 利用GIS地图对所在的位置进行实时显示并与用户实时交互. 主要分为网络定位和卫星定位. 网络定位时通过集成百度底图进行定位, 卫星定位是通过北斗或者GPS芯片进行定位. 卫星定位利用北斗卫星导航系统进行目标的定位与位置信息获取, 北斗卫星导航系统是由空间段、地面段和用户段三部分组成. 其可在全球范围内全天候、全天时为各类用户提供高精度、高可靠性定位、导航和授时服务, 并具有短报文通信能力, 已经初步具备区域导航、定位和授时能力, 定位精度10米, 测速精度02米/秒, 授时精度10纳秒[13,14]. 北斗模块的定位原理: 首先移动设备发送信号到卫星, 接着卫星转发到总控站进行解算, 然后总控站把解算结果转发给卫星. 最后, 卫星将结果传回到客户端. 延迟相对较高, 但是定位精度相对较高. 百度地图定位时通过百度地图得到定位信息, 利用GIS地图所在位置进行实时显示, 其中调用GIS地图服务必须先获取其Map API Key. 在野外工作中, 网络定位受信号、设备等因素的影响, 精度一般在10–20米左右, GPS定位也会受到云层、地形等因素的影响导致定位误差; 因此, 建立北斗/GPS与移动网络结合的综合定位策略, 在定位过程中, 当无法通过GPS定位时, 通过移动网络获取定位, 当获取到GPS定位后, 用GPS定位替换移动网络定位.在此基础上, 基于移动GIS的可视化采集用户接口, 实现结构化与非结构化的原始数据在矢量化地质底图的实时定位录入.
2.3.2 数据操作模块
对地质数据进行录入和保存, 同时基于定位模块实现可视化的数据录入和数据编辑, 该模块根据业务需求分为六个子模块: 岩体、土体、水体、构造、资源和灾害, 如图3所示. 岩体数据录入主要记录野外岩体调查点的岩体综合信息, 包括地理位置、经纬度坐标、岩体名称、高程、岩性等; 土体数据录入主要记录土质类型、颜色、颗粒粗细等; 水体数据录入主要记录水体类型、流量、水深、动态变化等; 构造数据主要记录构造类型、走向等; 资源数据主要记录调查点的矿种类别、资源量、矿体特征等; 灾害数据主要记录调查点的灾害类型、灾害范围、灾害程度等.
2.3.3 实体投影模块
实体投影主要是能够在World Wind地球仪上对调查路线调查区进行实体投影, 方便野外工作人员采集数据; 同时也能够对工作人员当前位置进行投影展示, 进行导航或通过在底图上投影的调查点查看采集的调查点的详细信息. 投影包括调查点投影以及实际勘探路线直线投影, 导航指通过点击地图上调查点投影跳转到对应的调查点详情界面.
要在地图上获得实际路线投影, 首先要遍历数据库里的所有调查点, 使用HashMap将不同图幅的调查点进行分组, 同一图幅调查点放到同一个List数列中; 再依次对同一图幅的调查点List使用HashMap分组得到每条路线所对应的调查点List. 根据同一路线的每个调查点的经纬度创建一个position对象, 创建path对象并将所有position加入其中, 最后将path对象加入RenderableLayer对象中, 再将RenderableLayer加入World Wind图层即可在地图上显示路线投影.
调查点投影遍历数据库下所有调查点, 对每个调查点创建Placemark(地标: 调查点标志)和Lable(标签: 调查点编号)对象, 并将其加入RenderableLayer对象中, 再将RenderableLayer加入World Wind图层即可在地图上显示调查点投影. 调查点导航首先需要添加触摸事件, 判断触摸的是否为所添加的调查点投影. 若为调查点投影, 则根据该点的经纬度与所有调查点的经纬度进行比较, 若一致, 则使用startActivity函数并携带Point对象跳转到相对应的调查点详情界面.
2.3.4 三维展示模块三维展示模块可以很好地展现地球的各种宏观形态, 可以对地球上的一些人类活动进行模拟; 通过旋转地球, 可以从多角度来观察地球上的地形地貌; 通过“日夜循环”模式, 清晰地了解地球自转情况, 通过模拟飞行器绕地飞行, 宏观地展示地面的复杂情况, 方便规划飞行路线; 该模块还可以在地表进行地标的拖拽、分析地表纹理以及在地球上进行一些简单的模型搭建等等.
2.4 数据库设计 2.4.1 图幅基本信息数据库设计图幅基本信息数据库用于存储每张图幅切片所对应的基本信息, 用户选择图幅后系统可以根据数据库中的入伏基本信息和SD卡中对应的图幅, 将其加载到World Wind地图上, 图幅基本信息表数据结构如表1所示.
2.4.2 地质数据库设计
系统数据库模型采用图幅-路线-调查点以及调查点的相关地质要素数据, 包括岩体、土体、水体、构造、资源、灾害6大要素. 地质数据模型E-R图如图4所示.
对地质数据进行录入和保存, 按照地质要素分类, 每个地质要素类别中包含多张数据表, 例如调查点要素类别中包含调查点基本信息表、调查点查证表、样品信息表、调查点影像表和应用评价表; 水体要素类别中包含水体(泉)调查表、水体(井、钻孔)调查点表、水体(河)调查点表、井/孔水文地质柱状图信息表等; 其他地质要素类别中包含的数据表归纳整理后, 如表2所示.
其中以调查点基本信息数据表为例的数据结构如表3所示, 数据表采用GUID主键, 其中调查点统一编号、图幅编号、路线编号和调查点号为必填字段, 当用户在数据录入时, 遗漏填写必填字段, 系统在交互界面中设计有温馨提示对话框.
3 系统关键技术 3.1 World Wind地图技术
在GIS底图选取时, 使用基于World Wind的三维地球仪作为载体, 替换传统的二维平面底图.World Wind是美国航空宇航局研发的一款开源的地理软件, 能够展现NASA、UGCS等服务商所提供的地球图像, 是一个可视化地球仪. World Wind实质上是为应用程序表达、处理和分析空间数据提供了一个平台, 其最大的特性是它是唯一拥有将多种公开和专用地理数据聚合功能, 不但可以提供NASA自身的数据, 还可以提供从其他政府部门、行业和普通大众中得到的数据; 此外, 它还能够自动更新卫星数据, 应用程序通过其接口可以获取最新的卫星数据, 例如火山喷发、地震等卫星影像. 软件开发人员能够使用该软件迅速搭建一个应用程序, 实现地图与地理信息的可视化交互, 也能够根据特定领域的需求, 研发相关的应用程序.
World Wind在地图显示时通过采用使用多分辨率图层技术, 达到快速浏览、缩放遥感影像数据的目的. 所谓多分辨率图层技术[15]就是对被显示的数据进行重采样, 提取不同分辨率的图层, 然后根据World Wind的视距显示不同分辨率的图层. World Wind首先对地球进行网格划分, 在不同的分辨率层次上划分大小不同的网格, 并进行编号[16]. 在第0层, World Wind将地球分成50块瓦片, 每一块影像跨度为36°×36°; 第1层在图层0的基础上提高4倍的分辨率, 也就是说对于同一影像, 它被分成18°×18°的片段, 因此产生200块信息的瓦片; 在图层2, 分辨率提高到含有800块9°×9°的瓦片; 图层3就是4.5°×4.5°, 而且含有3200块瓦片, 以此类推.
World Wind采用了先进的流传输技术, 传统的数据传输方式是直接传输空间数据, 而World Wind客户端和服务器采用了传输图片的方式, 也就是说当用户向服务器请求数据时, 服务器不用即时生成数据, 而是将先前准备好的图片数据拼接成用户需要的范围, 并返回给用户, 这在一定程度上极大地降低了服务器和网络宽带的负担.
相对于具有较强商业性的GoogleEarth, World Wind是完全免费的, 其本身并不是一个应用程序, 而是一个SDK, 能够提供完全开源的API来进行软件开发的工具包, 其数据也更全面, 结构更开放, 支持加载GoogleEarth的KML文件.
World Wind地图的实现主要包含以下几个步骤:
1) 使用Gradle将World Wind库添加到项目中;
2) 在Activity对应布局文件中添加FragmentLayout;
3) 在Activity中创建一个WorldWindow的实例并添加到FragmentLayout中;
4) 要使得WorldWind地球能够下载图像, 需要将下面两个网络访问权限添加到AndroidManifest中.
<uses-permission android:name=”android.permission.INTERNET”/>
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
3.2 网络通信技术Android提供了两种常用的网络通信方式, 分别包括使用TCP/IP协议的Socket通信以及另一种基于HTTP协议的[17]. 本系统研发采用基于TCP/IP协议的Socket, 主要是因为HTTP采用了“请求-响应”方式, 服务器不能主动向客户端发送消息, 而系统的进一步完善, 服务器发送、更新以及服务器主动确认客户端实时位置等可能都需要服务器向客户端发送请求; TCP是面向连接的, 其三握手原则能确保将连接的不稳定性降到最低.而不采用UDP套接字是因为UDP不是面向连接的, 不需要在数据传输之前建立连接, 并且在接收到数据之后也不会向数据源发送确认信号.发送端没有接收到确认信号, 便无法确认是否数据成功发送到对方手上, 当然也不需要你重新发送数据, 因此它是一种没有连接、缺乏可靠性的一种数据传输协议. 而地质数据十分重要, 保证数据传输的可靠性、安全性决定了我们应该使用TCP套接字. 系统Android客户端和服务器端利用Socket进行数据交互通信的具体流程如图5所示.
3.3 多线程技术Android一般会将线程分为两种, 其中一种叫做Main Thread, 其余的线程则被称为Worker Thread. 当用户在运行某个程序的时候, Android操作系统都会开启一个主要的线程给该程序, 这个线程主要被用来加载UI界面, 与用户进行交互并将交互结果根据需要显示到屏幕上, 这个线程通常被称为Main Thread, 又叫UI Thread. 程序要想在Worker Thread中更新Main Thread的UI界面, 这就涉及到Worker Thread和Main Thread之间的消息通信问题[18]. Android操作系统为开发人员提供了处理多线程之间的消息通信问题的两种方式: Handler机制和AsyncTask机制.
(1) 通过Handle机制来实现的通信方式: Android一般使用Handler处理线程中的消息队列, 每当线程中的Looper对象获取到消息队列传过来的某个消息时, Handler就会把该消息发送给对象, 每个线程中只能包含唯一的一个Handler对象, 使用该Handler对象便可以向其对应的线程传递消息, 即Message对象; Handler一般用于实现某一个定时的任务或者用于线程之间的数据传递.
(2) 通过AsyncTask机制来实现的通信方式: AsyncTask通过将线程池和Handler进行封装来处理线程间的通信问题, 其优点在于能够比较方便地在主线程中进行用户界面更新, 主要是因为AsyncTask中拥有一个Handler对象, 能够向主线程传递消息并让其更新界面; 使用线程池是为了避免不必要的线程创建和销毁.
本文使用多线程机制主要是为了进行网络数据请求, 在进行网络请求时, 往往耗时较久, 需要在子线程中进行, 由于Handler具有结构清晰, 函数定义清晰等特点, 本文也不需要AsyncTask所包含的线程池进行管理, 因此采用Handler机制来解决主线程与工作线程之间的通信问题, 具体实现流程如图6所示.
3.4 数据存储技术数据持久化通常指将存储在某个存储器中的临时数据存储到设备中, 确保设备关闭时数据不会丢失.本系统采用了两种数据持久化方式: 文件存储到SD卡和SQLite数据库存储. 文件存储到SD卡中主要用于存储较大的图幅切片, 结构性复杂、数据量大的关系型数据存储到SQLite数据库. 文件存储不会对保存的数据做任何格式化的处理, 任何数据都是按照其原本的状态存储到对应的文件中, 文件存储适合粗出二进制数据或者不是很复杂的文本数据. SQLite数据库作为一种轻量级的关系型数据库, 占用了非常少量的系统资源, 读写速度非常快, 被广泛应用于移动通信中. SQLite数据库文件存放在应用程序根目录下的databases目录里面, 不仅支持标准的SQL语法, 还支持数据库的ACID事务, 相对于其他的数据库, 其方便之处在于不需要用户名和密码等访问权限. Android正是通过将其设置为操作系统自带的数据库, 进一步促进了数据的本地持久化.
3.4.1 图幅切片存储到SD卡实现步骤
1) 创建File类, 指向图幅切片保存位置;
2) 创建File类对应的缓存输出流BufferOutputStream;
3) 将字节流数列转换为Bitmap对象;
4) 调用Bitmap类下的compress方法将图片以png文件格式保存到SD卡对应目录中.
3.4.2 SQLite存储数据实现步骤1) 完成LitePal的配置工作;
2) 创建数据库并创建需要的数据表;
3) 继承DataSupport类, 实现增、删、改、查功能.
4 系统运行效果测试本系统已在Android系统的设备上进行安装调试, 并通过大量的测试, 对系统的功能进行优化和升级, 最终版本已经应用到实际工作中, 并取得较好的效果. 系统安装及运行效果如图7所示. 根据实际业务需求, 系统实现了高空鸟瞰图与地平线视角两种显示方式, 供用户在实际应用中进行选择, 运行效果如图8所示.
三维展示模块能够很好地展示地球的各种宏观形态, 通过旋转, 可以从多种角度来观察地球上投影的地形地貌; 通过“日夜循环”模式, 模拟飞行器绕地飞行, 宏观地观察地面的各种复杂地形情况, 方便规划野外地质勘查路线; 也能够实现地标拖拽、纹理分析及模型搭建等.
地质数据采集人员在野外对数据进行录入和保存, 结合定位模块, 自动填写坐标、录入时间等信息, 利用World Wind地球仪对指定位置的地质信息进行实时可视化的显示, 然后对各类地质信息数据进行录入, 之后可对录入的数据进行查看、修改和删除等操作, 运行效果如图9所示.
实体投影模块能够在World Wind地球仪上对调查点进行实体投影, 方便野外地质数据采集工作人员采集数据; 同时能够对工作人员当前位置进行投影, 为工作人员导航; 通过底图上投影的调查点, 能够查看采集的调查点的详细信息.
5 总结
本文针对地质数据野外采集与数字化的实际问题, 集成World Wind地图技术、网络通信技术、多线程技术和数据存储技术, 设计并实现了一种基于World Wind移动端的地质数据野外采集系统, 替换传统的纸质录入方法和掌上电脑平面文本录入的方法. 基于北斗/GPS与移动网络的综合定位策略研究取得了较好的成果; 基于移动GIS的可视化数据采集用户接口, 实现了结构化与非结构化的原始数据矢量化地质底图的实时定位录入; 基于WorldWind移动GIS图形编辑、导航及投影研究取得了突破性成果; 本系统的研发提高了资源勘查工作的效率, 减少工作人员数量, 降低资源勘查的成本; 利用移动互联网的普遍性、便捷性以及安全性实现野外地质工作的信息化采集、浏览和展示, 为用户提供了一种全新高效的工作方式.
[1] |
吴冲龙, 刘刚, 田宜平, 等. 地矿勘查信息化与地矿信息科技学科建设. 中国地质教育, 2005, 14(1): 32-35. DOI:10.3969/j.issn.1006-9372.2005.01.009 |
[2] |
余丽. 基于GIS的野外地质素描系统研制[硕士学位论文]. 武汉: 中国地质大学, 2006.
|
[3] |
刘丽, 张礼中, 朱吉祥. 国内基于移动GIS的野外地质数据采集信息化研究现状. 南水北调与水利科技, 2015, 13(2): 343-348. |
[4] |
李艳梅. 基于Android平台的电子测绘的关键技术研究[硕士学位论文]. 武汉: 湖北大学, 2016.
|
[5] |
陈静. 信息技术在野外地质数据采集中的应用现状综述. 化工矿产地质, 2001, 23(4): 252-254. DOI:10.3969/j.issn.1006-5296.2001.04.010 |
[6] |
姜作勤, 李友枝. 野外地质数据采集信息化的现状与特点. 中国地质, 2001, 28(6): 1-5. DOI:10.3969/j.issn.1000-3657.2001.06.001 |
[7] |
高飞. PDA+GPS与ArcPad支持下的野外考古数据采集. 合肥学院学报(自然科学版), 2011, 21(2): 36-39. DOI:10.3969/j.issn.1673-162X.2011.02.010 |
[8] |
方成名, 葛梦春, 李超龄, 等. 数字填图技术理论基础. 新疆地质, 2003, 21(S1): 7-11. |
[9] |
余丰华, 夏跃珍, 杨克红, 等. 移动GIS技术在地质灾害数据采集领域的应用研究. 中国地质灾害与防治学报, 2006, 17(2): 102-106. DOI:10.3969/j.issn.1003-8035.2006.02.023 |
[10] |
刘刚, 吴冲龙, 汪新庆. 计算机辅助区域地质调查野外工作系统研究进展. 地球科学进展, 2003, 18(1): 77-84. DOI:10.3321/j.issn:1001-8166.2003.01.011 |
[11] |
妥洪波. 基于GIS技术的高速公路突发事件应急管理信息系统的研究[硕士学位论文]. 重庆: 重庆交通大学, 2017.
|
[12] |
李海艳. 移动GIS的概念体系研究[硕士学位论文]. 西安: 长安大学, 2006.
|
[13] |
周万枝, 李菊侠. 基于北斗导航的道路运输管理研究. 中国科技信息, 2013(9): 139. DOI:10.3969/j.issn.1001-8972.2013.09.075 |
[14] |
万昕, 涂勇. 测绘与地理信息新技术在矿山测量中的应用及展望. 世界有色金属, 2018(11): 25-26. DOI:10.3969/j.issn.1002-5065.2018.11.016 |
[15] |
王宏武, 董士海. 一个与视点相关的动态多分辨率地形模型. 计算机辅助设计与图形学学报, 2000, 12(8): 575-579. DOI:10.3321/j.issn:1003-9775.2000.08.004 |
[16] |
Albus developer desk. TIFFTM revision 6.0. Washington: Aldus Corporation, 2001. 13–16.
|
[17] |
王浩. 基于手机终端的移动视频监控系统设计与实现. 2014全国无线及移动通信学术大会论文集. 沈阳: 中国通信学会无线及移动通信委员会, 2014.4.
|
[18] |
白光佩. 中通供应商业务系统的Android手机客户端设计与实现[硕士学位论文]. 济南: 山东大学, 2015.
|