劉敬濤,黃 鷹,覃澤穎
(1.桂林理工大學 測繪地理信息學院,廣西 桂林 541004;2.廣西國土資源廳 土地整理中心,廣西 南寧530028;3.桂林好測信息科技有限公司,廣西 桂林 541004)
GPS-RTK自首次應用之后,就憑借其定位速度快、精度高、全天候等優勢迅速成為當前野外測量的首選方法。然而,其操作手簿仍舊使用微軟的Windows操作系統,Android版本的GPS-RTK手簿研究在國內外仍舊是一個空白。本文對GPS-RTK手簿使用Android操作系統的可行性進行研究,并簡單比較了2種操作系統的優劣。
經過查閱大量文獻資料,筆者發現Android操作系統相對于微軟Windows 操作系統主要有以下優勢:①Android操作系統是開源的,不存在以前使用的手簿需要向微軟繳納版權費的問題,降低了使用成本。更重要的是開源降低了對程序員的要求,會有更多的人投入到此應用的開發中,這必定加快此應用的更新速度,使其擁有更豐富的功能,更加人性化的操作,降低測量人員的野外工作強度,提高作業效率。②Android操作系統對硬件的要求遠低于微軟的Windows 操作系統。目前市面上使用的RTK手簿多數都是需要向特定廠家訂購的,價格昂貴,但是如果你有一款Android的手機或者平板,那么你完全可以安裝Android版本的軟件來實現一樣的效果,從而省去購買手簿的開支。③Android系統的3G通信模塊可以對未來CORS定位系統提供完美解決方案,而目前使用的微軟系統對此卻是一片空白。
手簿的開發以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。
安裝過程為:①安裝JDK。②安裝Eclipse。③安裝SDK。④設置環境變量。⑤為Eclipse安裝ADT Plugin。⑥安裝Android SDK。啟動Eclipse,在Windows→Android SDK Manager(注意,這個過程必須聯網)查看當前可用以及需要下載的SDK版本。在Windows→AVD Manager新建一個Android模擬器之后直接點擊Launch,稍等片刻,電腦屏幕便會出現虛擬Android機[2,3]。
系統涉及項目建立、項目套用、大地坐標正反算、RTK校正、放樣、實時坐標解算,需要按照特定格式存儲點位信息以及測量數據文件的自動建立與命名等若干功能。
應用共有5個主要模塊:工程模塊、工具模塊、測量模塊、藍牙模塊、解算模塊。
手簿試驗所使用的GPS接收機以南方為主,考慮其兼容性,使用過中海達GPS接收機。
此模塊主要用于創建新的工程文件和打開已存在的工程文件。在創建新的工程文件中,用戶可以創建自己的工程,配置此工程測量所采用的橢球模型、中央子午線和相應轉換參數等信息。打開工程即是采用之前此工程的配置參數進行下一步測量。如果沒有創建新的工程和打開工程文件操作,系統會默認采用前一次測量所采用的測量參數。主要流程見圖1。

圖1 工程模塊主要流程圖
工具模塊主要包括點位校正、坐標正反算、高斯投影正反算及相鄰帶的坐標換算等內容。
測量模塊是此應用中最重要的模塊,測量模塊的主要流程如圖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機器號此時的注冊碼。
此模塊為不可見模塊,主要有藍牙連接模塊、藍牙接收模塊、藍牙發送模塊和異常處理模塊。藍牙連接模塊主要負責發現附近可用藍牙并嘗試建立通信端口與之建立通信連接。藍牙接收模塊主要負責接收與之建立連接的GPS接收機藍牙端口發送過來的GPS協議數據,格式如圖3所示。其中每一行分別代表的含義詳見GPS協議[5,6](NMEA-0183協議)。(注:廠家對此協議會有所改動,例如南方S86 GPS接收機發送電文$GPGGA中經緯度精度達到小數點后8位,無$GPASV電文,增加一些新電文,如前面介紹的注冊GPS接收機主機時反饋的電文)。此模塊在接收到數據之后,會提取經緯度、衛星狀態等信息并將其移送到解算模塊。接收模塊是一個建立好連接之后一直在后臺運行的進程,用戶選擇停止或者藍牙連接中斷會銷毀此進程。藍牙發送模塊主要負責將編輯好的指令發送給GPS接收機,以期操作GPS接收機。異常處理模塊主要處理一些異常情況,例如突然丟失藍牙連接、藍牙開關突然關閉等,此模塊會妥善處理此類情況,而不至于使程序因為藍牙連接異常而崩潰[7]。

圖3 GPS協議數據格式(部分)
此模塊同樣為不可見模塊,主要負責程序解算工作。高斯投影正反算及相鄰帶的坐標換算、坐標正反算、點位校正、坐標轉換等都是通過此模塊解算。
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