移动端体育场地调绘系统的设计与实现
2022-04-01王法景李耀琛
王法景,盛 辉,李耀琛
(1.杨凌职业技术学院,陕西 杨凌 712100;2.中国石油大学(华东)地球科学与技术学院,山东 青岛 266580;3.呼和浩特市气象局,内蒙古 呼和浩特 010020)
传统的体育场地现场调查需要携带大量的纸质资料,如行政图、规划图、遥感图以及文本资料等,很不方便;并且在调绘过程中,存在定位困难、信息查找麻烦、现场调绘数据难以存储等问题,导致工作效率低下、调研结果准确度低以及调绘成本较高[1-6]。近年来,随着移动技术的飞速发展和移动端硬件水平的不断提高,地图服务软件逐渐成为热门,进入人们的日常生活,如百度地图、高德地图、腾讯地图、谷歌地图和天地图等。基于移动平台的地图应用开发也成为开发者们重点关注的领域。通过移动端开发技术,调绘人员可随身携带电子化的体育场地数据,在任何地点、任何时间都能查到所需信息,完全达到3A的效果[7]。
本文根据调绘人员对体育场地位置和信息的查找、自身位置确定以及调绘数据存储等相关需求,设计了调绘系统的基本框架和主要功能;并以Android平台为基础,结合分布式数据库、移动数据库、移动网络通信以及移动设备定位等技术,利用百度地图应用程序接口(API)设计了体育场地调绘系统。该系统运行于Android设备上,携带方便、实用性强,不仅能在调绘时为调绘人员提供地图服务和快速、准确的位置信息,而且简化了体育场地信息采集和编辑后数据的更新过程,改变了传统体育场地调绘方式,提高了调绘工作效率。
1 系统设计
1.1 设计目标和系统架构
根据规划部门的需求,针对目前现场调绘工作中存在的定位困难、场地信息难以查找、现场调绘数据难以存储等问题,本文利用数据库、百度地图API、Web Service等技术框架建立了一套安全稳定、界面友好、实用性强的体育场地现场调绘系统,实现了体育场地查询显示、信息采集、属性编辑等功能。系统采用数据层、逻辑层和应用层3层体系结构,其中数据层是系统开发的基础,主要负责体育场地数据的存储检索、用户验证和地图服务;逻辑层是系统的核心,也称数据服务层,负责链接数据层和应用层,可直接访问数据库,为应用层提供所需数据;应用层是移动客户端,是系统的应用界面,负责将从逻辑层获取的请求信息展示给用户,以满足用户的应用需求。系统架构如图1所示。
图1 系统架构图
1.2 功能设计
体育场地调绘系统的主要功能包括用户验证、地图操作、查询显示、属性编辑、信息采集、GPS定位、路线规划、统计分析和绘图等(图2)。为了保证系统安全、防止数据泄露,在进入系统前需输入用户名和密码,服务器将根据输入的信息判断用户名是否存在、密码是否正确,然后将验证结果返回给客户端,完成用户验证。地图操作功能包括地图放大、地图缩小、地图平移、图层切换、距离测量、面积测量等。体育场地信息可通过两种方式进行查询:①根据体育场地名称进行模糊查询,以标注点的形式将匹配的体育场地显示在地图上,点击标注点则可显示该场地的详细信息;②根据场地所在行政区划、场地分布类型和场地类型进行综合查询,以列表的形式展示查询到的场地详细信息,点击某一列表项则可跳转到地图图层上显示。属性编辑首先通过点击待修改的体育场地标注点,显示该点的详细信息;然后修改变化信息并保存到数据库中。体育场地信息采集,即将体育场地的属性信息(场地名称、场地分布、场地类型、经纬度、场地位置、行政区划等)和图片信息保存到数据库中,位置信息通过移动设备自带的GPS定位模块获取。路线规划首先输入起点和终点,再选择检索方式和策略,最后将规划结果显示在地图上。以驾车方式为例,包括最短距离、最小费用和时间优先3种驾车策略,若选择最短距离策略,则规划路线就会显示在地图上,点击路线中的节点将显示详细的途径点提示信息。统计分析功能包括统计不同行政区划体育场地数量、不同类型体育场地数量以及某一行政区划不同类型体育场地数量等,并以柱状图的形式显示这些统计结果。绘图功能类似于画板,工作人员可在移动设备上选择不同的画笔对地图进行描绘标注,再调用平板的截屏功能将标注保存。
图2 系统主要功能设计
2 关键问题研究
2.1 数据安全和加密技术
系统采用两种措施相结合的方式来保证系统的安全性和数据的保密性,即进入系统前需进行用户验证以及对数据库文件进行加密。由于体育场地数据量较大,为提高数据传输效率,系统将原有的体育场地数据存放到本地SQLite数据库中。为保证数据的安全性,需对本地的SQLite数据库文件进行加密,即使设备丢失数据也不会泄露。数据库加密主要包括将内容加密后再写入数据库和对数据库文件加密两种思路,前者每次操作均需解密,内存消耗大,数据处理慢;后者只需对文件解密即可进行数据库操作,其他软件都无法打开,保证了数据安全。
本文采用AES对称加密算法对本地数据库文件进行加密[8]。系统采用开源的SQLCipher对SQLite数据库进行加密。SQLCipher采用的是基于SQLite的256-bit AES算法,主要的加密接口与SQLite相同,增加了一些自己的接口。
2.2 标记点聚合
体育场地查询结果是以Marker标记点的形式展示的,当查询到的点数量较少时,系统可流畅运行,但当查询到的标记点过多时会出现问题,一方面标记点全部加载耗时较多,系统将出现明显卡顿,另一方面在缩放级别较小时点位会非常密集,造成点位重叠覆盖,产生不良的视觉效果。
为解决上述问题,本文采用直接距离法对标记点进行聚合[9-10],首先获取当前屏幕范围内所有标记点的集合,设定聚合距离,初始时没有任何已知的聚合点,随机选取一个标记点作为原始聚合点,根据当前缩放级别计算该聚合点的外包正方形大小;然后逐个计算其他标记点与所有聚合点中心的距离,并获得离标记点最近的聚合点,判断二者的距离是否大于设定的聚合距离,若大于聚合距离,则形成新的聚合点,若小于聚合距离,则判断该标记点是否在聚合点外包正方形内,如果在外包正方形内,则将标记点添加到该聚合点集合中,并重新计算聚合点中心,如果不在外包正方形内,则形成新的聚合点;依据该原则,直到遍历完所有标记点为止。标记点聚合流程见图3。
图3 标记点聚合流程图
3 系统开发实现
3.1 开发环境
系统以Android Studio1.2.2为开发平台,以Java语言为开发语言,利用SQL Server 2012数据库存储服务器端数据,利用SQLite数据库存储移动端数据,以C#为Web Service开发语言,结合百度地图API for Android进行开发。
3.2 系统实现
系统采用百度地图API for Android组件进行开发,底图采用百度地图提供的平面图和遥感图。百度地图Android SDK是一套基于Android2.1及以上版本设备的应用程序接口,通过调用地图SDK接口,可轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。在使用百度地图Android SDK前需使用百度账户申请开发密钥。本文以体育场地查询显示和体育场地信息采集两个功能为例,介绍其主要的实现思路。
1)体育场地查询显示。体育场地查询所用的数据库是本地SQLite数据库,这样不仅可以保证查询效率而且在离线情况下也能使用该功能。由于SQLite数据库中体育场地坐标采用WGS84坐标系,而百度地图采用BD-09坐标系,因此在加载前需利用Coordinate-Converter类进行坐标转换。该功能包括体育场地名称和综合查询两种方式,查询结果以标记点的形式进行展示,点击标记点将弹出体育场地的详细信息窗口。当查询所有体育场地时,由于数据量较大,标记点加载效率和显示效果较差,为了解决该问题,需要自定义聚合器类Cluster和聚合标注物类ClusterMarker。ClusterMarker具有网格大小和中心两个重要属性,网格大小由当前缩放级别计算得到,中心为被聚合的所有标记点的平均位置。聚合器类Cluster即一个判别标准,用于判断标记点属于哪一个ClusterMarker。通过这两个类将屏幕可视范围内所有的标记点聚合,聚合点记录被聚合的标记点的个数,效果图如图4所示。
图4 标记点聚合效果图
2)体育场地信息采集。采集的体育场地信息包括场地经纬度、名称、类型、分布、面积、位置、行政区划和图片等。由于对GPS精度要求不高,体育场地的经纬度信息利用平板设备自带的GPS模块,通过LocationManager类获取。体育场地的图片信息通过调用平板设备自带的拍照功能获得。属性信息填写完成后,点击提交按钮将属性信息和图片信息上传至服务器端SQL Server数据库中,即可完成体育场地数据的采集。体育场地信息采集流程如图5所示。
图5 体育场地信息采集流程图
Android移动端对嵌入式SQLite数据库具有良好的支持,但当数据库为服务器端的SQL Server数据库时,移动端很难以直接访问的形式对数据库进行操作。为了实现移动端与SQL Server数据库的数据交互,本文采用ASP.NET技术创建了服务器端Web Service,并通过IIS发布。当系统需要执行数据操作时,移动端通过HttpURLConnection类向Web Service所在服务器发送SOAP请求,服务器通过解析请求参数调用相应的方法;然后将结果以xml的形式返回给客户端,客户端通过XmlPullParser类将xml解析为所需的形式展示给用户。
兼顾移动网络访问速度和用户流量费用两个方面,系统采用离线地图功能,首先将离线地图包存放到本地内存中,然后系统运行时会优先加载本地离线地图为底图,这样在网络条件差的情况下也能流畅查看地图信息,给用户带来良好的体验效果。
4 结语
本文首先论述了体育场地规划的必要性以及传统体育场地现场调研过程中存在的不足,然后针对存在的问题设计了体育场地调绘系统的架构和功能。基于百度地图API、SQLite数据库和Web Service技术,本文开发了Android移动端的体育场地调绘系统,实现了体育场地调绘移动办公,提高了调绘工作的效率和精度,降低了调绘成本,具有一定的实用价值。