基于Android平台的GPS-RTK手簿系统
2014-02-19刘敬涛覃泽颖
刘敬涛,黄 鹰,覃泽颖
(1.桂林理工大学 测绘地理信息学院,广西 桂林 541004;2.广西国土资源厅 土地整理中心,广西 南宁530028;3.桂林好测信息科技有限公司,广西 桂林 541004)
GPS-RTK自首次应用之后,就凭借其定位速度快、精度高、全天候等优势迅速成为当前野外测量的首选方法。然而,其操作手簿仍旧使用微软的Windows操作系统,Android版本的GPS-RTK手簿研究在国内外仍旧是一个空白。本文对GPS-RTK手簿使用Android操作系统的可行性进行研究,并简单比较了2种操作系统的优劣。
1 两种操作系统的比较
经过查阅大量文献资料,笔者发现Android操作系统相对于微软Windows 操作系统主要有以下优势:①Android操作系统是开源的,不存在以前使用的手簿需要向微软缴纳版权费的问题,降低了使用成本。更重要的是开源降低了对程序员的要求,会有更多的人投入到此应用的开发中,这必定加快此应用的更新速度,使其拥有更丰富的功能,更加人性化的操作,降低测量人员的野外工作强度,提高作业效率。②Android操作系统对硬件的要求远低于微软的Windows 操作系统。目前市面上使用的RTK手簿多数都是需要向特定厂家订购的,价格昂贵,但是如果你有一款Android的手机或者平板,那么你完全可以安装Android版本的软件来实现一样的效果,从而省去购买手簿的开支。③Android系统的3G通信模块可以对未来CORS定位系统提供完美解决方案,而目前使用的微软系统对此却是一片空白。
2 Android开发环境的搭建
2.1 准备工作
手簿的开发以Windows7操作系统为平台,在搭建Android开发环境之前,需要以下必要的软件支持[1]:
①JDK(Java Development Kit), 即jdk-7u11-windows-i586.exe,官网下载最新版本。
②Eclipse Classic 4.2.1-win32.zip,在Eclipse官网下载。
③ADT(Android Development Tools),Android开发插件,最新版本为ADT-21.0.1.zip。
④Android SDK(Software Development Kit):android-sdk_r21.0.1-windows.zip。
2.2 安装与配置
安装过程为:①安装JDK。②安装Eclipse。③安装SDK。④设置环境变量。⑤为Eclipse安装ADT Plugin。⑥安装Android SDK。启动Eclipse,在Windows→Android SDK Manager(注意,这个过程必须联网)查看当前可用以及需要下载的SDK版本。在Windows→AVD Manager新建一个Android模拟器之后直接点击Launch,稍等片刻,电脑屏幕便会出现虚拟Android机[2,3]。
3 系统总体结构的设计
系统涉及项目建立、项目套用、大地坐标正反算、RTK校正、放样、实时坐标解算,需要按照特定格式存储点位信息以及测量数据文件的自动建立与命名等若干功能。
应用共有5个主要模块:工程模块、工具模块、测量模块、蓝牙模块、解算模块。
手簿试验所使用的GPS接收机以南方为主,考虑其兼容性,使用过中海达GPS接收机。
3.1 工程模块
此模块主要用于创建新的工程文件和打开已存在的工程文件。在创建新的工程文件中,用户可以创建自己的工程,配置此工程测量所采用的椭球模型、中央子午线和相应转换参数等信息。打开工程即是采用之前此工程的配置参数进行下一步测量。如果没有创建新的工程和打开工程文件操作,系统会默认采用前一次测量所采用的测量参数。主要流程见图1。
图1 工程模块主要流程图
3.2 工具模块
工具模块主要包括点位校正、坐标正反算、高斯投影正反算及相邻带的坐标换算等内容。
3.3 测量模块
测量模块是此应用中最重要的模块,测量模块的主要流程如图2所示。
点号、编码等主要为南方CASS数字化地形地籍成图系统读取数据格式设计。按下测量存储后,数据自动保存到工程模块设置的文件中,其文件名后缀为.dat。其中内部存放数据的格式为:点号,编码,y,x,h。控制点测量服务于工具模块中的点位校正。按下此按钮之后,程序将在设置的时间内将符合测量要求的点自动测量、保存并平差计算,得到此点位相对较为准确的三维坐标值。解算模块解算相应的坐标转换参数,进而保证校正之后的点位坐标与目标坐标一致。连接按钮主要负责启动蓝牙进程,接收GPS接收机发送过来的数据,之后交给解算模块实时解算当前点位信息。开发人员调试工具中,第一个文本框负责显示处理之后的GPS接收机发送过来的相关字符串,第二个文本框负责编辑指令,配置GPS内部参数和远程控制GPS接收机。发送按钮负责将第二个文本框中编辑好的指令通过蓝牙进程发送给GPS接收机[4]。例如连接南方S86T GPS接收机,编辑 “readmachine+回车”字符发送给GPS接收机,返回相关信息如下:
图2 测量模块主要流程图
$GPXXX,8000W1386770370,W13867703709973 054265C9BB8AE3B9,20130527,SA7224-V3.1,OEMT,GPRS,H86_HW_01,F121224H_2.1,STATIC,ZH,3,0,0,822,862*
其中W1386770370为机器号,9973054265C9BB8 AE3B9为注册码,20130527为注册到期时间。此命令为读取此GPS接收机机器号、注册码、到期时间、特征码等相关信息。
当需要重新注册此GPS接收机时,编辑“REGI 9973054265C9BB8AE3B9+回车”并发送,如果得到正确注册,返回信息如下:
INPUT SERIAL W13867703709973054265 C9BB8AE3B9 UPDATED SUCCESSFUL,20130527.如果不正确,返回信息如下:
INIT: Serial CRC checksum error.
INPUT STRING W13867703709973054265 C9BB8AE3A9 UNMATCH SERIAL FORMAT.其中9973054265C9BB8AE3B9为W1386770370机器号此时的注册码。
3.4 蓝牙模块
此模块为不可见模块,主要有蓝牙连接模块、蓝牙接收模块、蓝牙发送模块和异常处理模块。蓝牙连接模块主要负责发现附近可用蓝牙并尝试建立通信端口与之建立通信连接。蓝牙接收模块主要负责接收与之建立连接的GPS接收机蓝牙端口发送过来的GPS协议数据,格式如图3所示。其中每一行分别代表的含义详见GPS协议[5,6](NMEA-0183协议)。(注:厂家对此协议会有所改动,例如南方S86 GPS接收机发送电文$GPGGA中经纬度精度达到小数点后8位,无$GPASV电文,增加一些新电文,如前面介绍的注册GPS接收机主机时反馈的电文)。此模块在接收到数据之后,会提取经纬度、卫星状态等信息并将其移送到解算模块。接收模块是一个建立好连接之后一直在后台运行的进程,用户选择停止或者蓝牙连接中断会销毁此进程。蓝牙发送模块主要负责将编辑好的指令发送给GPS接收机,以期操作GPS接收机。异常处理模块主要处理一些异常情况,例如突然丢失蓝牙连接、蓝牙开关突然关闭等,此模块会妥善处理此类情况,而不至于使程序因为蓝牙连接异常而崩溃[7]。
图3 GPS协议数据格式(部分)
3.5 解算模块
此模块同样为不可见模块,主要负责程序解算工作。高斯投影正反算及相邻带的坐标换算、坐标正反算、点位校正、坐标转换等都是通过此模块解算。
4 结 语
Android是一款全新的智能无线终端操作系统,它开放性好、功能扩展性强,能很好地支持各类测量程序开发。随着GPS_RTK在测量中越来越多的应用,其操作手簿功能丰富程度与方便使用与否将成为评价其优劣的直接因素,Android的开源优势将逐渐凸显,Android系统的GPS_RTK手簿将会得到更广泛的使用。
[1]吴孝丽,何燚.Windows中JDK的安装及Java开发环境的搭建[J].福建电脑,2005(9):126-127
[2]李宁.Android 开发权威指南[M].北京:人民邮电出版社,2011
[3]李兴华.Android开发实战经典[M].北京:清华大学出版社,2012
[4]周峰.基于Android智能手机平台的GPS开发[D].苏州:苏州大学,2011
[5]曹婷婷,高玉.GPS中NMEA-0183协议的应用[J].电子工程师,2006,32(10):8-11
[6]胡辉.GPS数据采集软件的实现[J].全球定位系统,2008(1):25-30
[7]公磊.基于Android的GPS测量系统开发[D].南昌:南昌大学,2008