孔愛(ài)婷 劉健 余旭
(1廣東工業(yè)大學(xué)土木與交通工程學(xué)院,廣東廣州510006;2中國(guó)極地研究中心,上海200136)
近年來(lái),各南極考察國(guó)家在南極開(kāi)展了大量的GIS研究活動(dòng),包括空間數(shù)據(jù)采集和管理、測(cè)繪和制圖等方面[1]。在南極,標(biāo)志性的地物不多,早期在南極探險(xiǎn)的人們通過(guò)觀測(cè)太陽(yáng)和星星來(lái)確定位置,到了20世紀(jì)80年代后期,南極人員普遍采用GPS定位的方法。為了尋找某個(gè)地點(diǎn),南極考察人員需要耗費(fèi)大量的精力。手機(jī)地圖定位服務(wù)的便攜性和數(shù)據(jù)的實(shí)時(shí)性可以很好地解決這一問(wèn)題。
現(xiàn)在的智能手機(jī)有著極高的集成性,為在手機(jī)上開(kāi)發(fā)測(cè)繪及地理信息系統(tǒng)(GIS)相關(guān)軟件提供了有利的條件并有著廣闊前景[2]。利用Android平臺(tái)[3]開(kāi)發(fā)手機(jī)地圖定位軟件成為了目前的研究熱點(diǎn),如:利用Google Map API技術(shù),開(kāi)發(fā)基于Android手機(jī)平臺(tái)的地圖應(yīng)用[4-5];通過(guò)調(diào)用已發(fā)布的Arc-GISServer[6]地圖服務(wù)研究實(shí)時(shí)跟蹤和快速準(zhǔn)確的地理定位[7];采用方向傳感器和GPS模塊,開(kāi)發(fā)野外使用的Android軟件[8]。目前大部分的人員定位軟件主要是以網(wǎng)絡(luò)的方式實(shí)現(xiàn),不適合在極地考察的南極人員使用。因此,開(kāi)發(fā)適合南極人員使用的移動(dòng)終端地圖定位軟件有著重大的現(xiàn)實(shí)意義。
本文所實(shí)現(xiàn)的南極人員定位軟件基于Android平臺(tái)開(kāi)發(fā),采用的地圖是經(jīng)過(guò)ArcGIS處理的衛(wèi)星圖像,該手機(jī)軟件可以用來(lái)瀏覽南極中山站和長(zhǎng)城站地圖,并能對(duì)其進(jìn)行放大縮小等漫游操作,同時(shí)具有無(wú)網(wǎng)絡(luò)實(shí)時(shí)定位、電子指南針、導(dǎo)航、位置記錄等功能,滿足了南極用戶基本的手機(jī)地圖定位服務(wù)需求。
南極人員定位軟件建設(shè)以實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)實(shí)時(shí)定位為目標(biāo),以 Android為開(kāi)發(fā)平臺(tái),以ArcGIS插件[9]為基礎(chǔ),結(jié)合計(jì)算機(jī)技術(shù)、GPS定位技術(shù)和ArcGIS Server地圖緩存技術(shù),實(shí)現(xiàn)地圖瀏覽、定位、電子羅盤、導(dǎo)航、記錄、計(jì)算距離等功能。
由于南極部分區(qū)域還不具備數(shù)據(jù)訪問(wèn)的無(wú)線網(wǎng)絡(luò)通訊環(huán)境,因此在移動(dòng)地理信息框架支撐方面選擇具備離線數(shù)據(jù)支持的輔助方法。軟件采用Arc-GISServer地圖緩存技術(shù),ArcGIS Runtime SDK for Android v10.1.1插件,以Eclipse作為開(kāi)發(fā)平臺(tái),以安卓手機(jī)Android 4.1.2作為真機(jī)測(cè)試。
根據(jù)南極人員出行考察的需要和Android平臺(tái)的特點(diǎn),南極人員定位軟件設(shè)計(jì)的功能如圖1所示。
圖1 軟件功能整體架構(gòu)Fig.1.Software architecture of functions
(1)底圖切換功能:用戶可以根據(jù)所在位置選擇對(duì)應(yīng)的底圖;
(2)地圖控制:實(shí)現(xiàn)地圖放大、縮小、平移等漫游操作,并提供導(dǎo)航功能;
(3)位置定位:每間隔20 s自動(dòng)更新位置;
(4)記錄功能:標(biāo)記當(dāng)前位置,包括添加和刪除功能;
(5)計(jì)算距離:計(jì)算當(dāng)前位置與記錄位置的距離。
軟件的開(kāi)發(fā)實(shí)現(xiàn)包括開(kāi)發(fā)環(huán)境的配置;地圖緩存的生成;定位模式的選擇;記錄位置、電子指南針等功能的開(kāi)發(fā)。
根據(jù)電腦的操作系統(tǒng),下載安裝對(duì)應(yīng)軟件,環(huán)境配置過(guò)程如下:(1)安裝JDK 1.6;(2)安裝Eclipse 4.3;(3)安裝SDK并設(shè)置環(huán)境變量;(4)安裝ADT;(5)安裝ArcGIS插件。
底圖的設(shè)計(jì)有兩種方案:一是把中山站和長(zhǎng)城站的影像疊加在世界地圖上,優(yōu)點(diǎn)是在空間上呈現(xiàn)無(wú)縫的特點(diǎn),缺點(diǎn)是創(chuàng)建后的緩存非常大;二是使用局部區(qū)域底圖,提供選擇底圖功能,優(yōu)點(diǎn)是創(chuàng)建后的緩存大幅減少,缺點(diǎn)是僅限于指定地區(qū)使用。
對(duì)這兩種方案的地圖進(jìn)行緩存切片研究,研究結(jié)果如表1所示。從表1可以看出,地圖緩存的大小與地圖范圍和緩存比例尺有關(guān),如果使用方案一,在保證底圖清晰的前提下,切片后的緩存必定很大,這樣會(huì)造成手機(jī)存儲(chǔ)容量的壓力,基于對(duì)比結(jié)果,選擇方案二,這樣既保證了底圖分辨率,也控制了緩存大小。
表1 緩存研究結(jié)果Table 1.The results of cache study
軟件以1∶4 000為最大比例尺,選擇6個(gè)比例級(jí)別,生成地圖緩存,步驟為:(1)對(duì)中山站影像和長(zhǎng)城站影像分別使用ArcMap配置底圖;(2)應(yīng)用ArcGISServer地圖服務(wù)器發(fā)布地圖服務(wù);(3)對(duì)底圖的地圖服務(wù)創(chuàng)建緩存。
手機(jī)定位方式有基站定位、GPS定位、Wifi定位、Assist GPS定位,考慮到南極特殊的地理環(huán)境,本軟件采用不依賴于網(wǎng)絡(luò)的GPS定位這種模式,在地球任何一個(gè)上空無(wú)遮擋的地方只需要同時(shí)接收到四顆或以上的衛(wèi)星信號(hào)就可以獲取經(jīng)緯度。
為了證明定位數(shù)據(jù)的準(zhǔn)確性,對(duì)任意兩個(gè)點(diǎn)采用GPS靜態(tài)測(cè)量技術(shù)進(jìn)行測(cè)量,得到這兩個(gè)點(diǎn)的坐標(biāo),分別是 113°23'18.91″E、23°02'27.43″N和113°23'33.34″E、23°02'06.26″N;使用手機(jī)每隔 20 s獲取這兩個(gè)點(diǎn)的坐標(biāo),對(duì)獲取的10組數(shù)據(jù)取平均后的坐標(biāo),分別是 113°23'18.71″E、23°02'27.91″N和113°23'36.51″E、23°02'11.61″N。 從測(cè)試結(jié)果可以看出,手機(jī)GPS與GPS接收機(jī)所獲得的數(shù)據(jù)之差在6″的范圍內(nèi)。手機(jī)GPS定位在空曠環(huán)境中能達(dá)到幾米至幾十米的精度,在一般環(huán)境中能達(dá)到幾十米至幾百米的精度。雖然不能和專業(yè)的接收機(jī)相比,但能夠滿足人員定位的一般需要[10]。
用Android提供的地理位置服務(wù)功能API獲取當(dāng)前的位置。這里主要用到LocationManager和LocationListener功能類進(jìn)行定位實(shí)現(xiàn),其中Location-Manager提供定位服務(wù)的功能;LocationListener提供定位信息發(fā)生改變時(shí)的回調(diào)功能。
由于南極沒(méi)有太多明顯的地物,因此軟件設(shè)計(jì)時(shí)提供記錄當(dāng)前點(diǎn)位置的功能,可以應(yīng)用在如海冰卸貨(記錄冰縫位置)、野外作業(yè)(記錄站點(diǎn)或標(biāo)識(shí)物位置)等情況下。記錄的標(biāo)記采用數(shù)字疊加圖標(biāo)的顯示方式。主要是根據(jù)當(dāng)前的位置信息添加圖標(biāo)和添加按順序的數(shù)字,并保存記錄點(diǎn)的信息。主要用到ArrayList數(shù)組類保存記錄點(diǎn)的信息和TextSymbol文本符號(hào)類型添加按順序的數(shù)字。
Android系統(tǒng)可支持多種傳感器類型,本程序主要使用到方向傳感器。用Android提供的API調(diào)用傳感器,這里主要用到SensorManager和SensorEventListener功能類獲取手機(jī)繞Z軸旋轉(zhuǎn)的角度,再根據(jù)此角度旋轉(zhuǎn)圖標(biāo),在底圖服務(wù)基礎(chǔ)上疊加此圖標(biāo)。然后設(shè)置一個(gè)監(jiān)聽(tīng)器,利用監(jiān)聽(tīng)接口onSensorChanged來(lái)讀取具體感應(yīng)內(nèi)容,從而實(shí)現(xiàn)電子指南針。
每個(gè)功能模塊實(shí)現(xiàn)后,運(yùn)行程序,測(cè)試過(guò)程如表2所示,選取幾個(gè)運(yùn)行畫面如圖2至圖7所示,從測(cè)試結(jié)果可以看出,整體設(shè)計(jì)滿足要求,實(shí)現(xiàn)了選擇底圖功能、顯示離線地圖、GPS定位、添加標(biāo)記、記錄該點(diǎn)位置、電子指南針指向正確、計(jì)算距離、放大、縮小等功能,而且定位數(shù)據(jù)準(zhǔn)確,運(yùn)行流暢。
表2 測(cè)試過(guò)程Table 2.The process of testing
南極人員定位軟件關(guān)鍵是實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)實(shí)時(shí)定位,加載離線地圖和添加一些輔助功能。
(1)ArcGIS地圖緩存技術(shù) 軟件采用處理后的衛(wèi)星圖像作為底圖,利用ArcGIS Server創(chuàng)建地圖緩存,利用ArcGISLocalTiledLayer類調(diào)用移動(dòng)終端地圖緩存。ArcGIS地圖緩存的主要問(wèn)題是緩存大小與緩存分辨率相矛盾的問(wèn)題,因此采用切換底圖的方法,這樣既保證了地圖的分辨率,又控制了緩存的大小。
(2)投影轉(zhuǎn)換技術(shù) 為了使獲取的位置信息可視化,采用圖形類Graphic對(duì)相關(guān)位置進(jìn)行圖標(biāo)注記和文字注記。由于GPS獲取的位置坐標(biāo)是WGS-84坐標(biāo)系下的大地坐標(biāo),即用經(jīng)緯度高程(B,L,H)表示的坐標(biāo);地圖使用的是墨卡托投影的直角坐標(biāo),是用(X,Y)表示的平面坐標(biāo)。因此,在不考慮高程參與轉(zhuǎn)換的前提下,使用ArcGIS Android API提供的GeometryEngine類將GPS獲取的經(jīng)緯度投影到地圖上。
圖2 GPS設(shè)置界面Fig.2.GPS interface settings
圖3 選擇底圖Fig.3.Basemap selection
圖4 記錄位置Fig.4.Position record
圖5 總體效果圖Fig.5.Overall effect diagram
圖6 顯示距離Fig.6.Distance shows
圖7 導(dǎo)航圖Fig.7.Navigation diagram
(3)實(shí)時(shí)定位的優(yōu)化 采用GPS定位時(shí),由于絕大部分用戶默認(rèn)不開(kāi)啟GPS模塊,因此使用協(xié)助組件之間通訊的類Intent激活GPS設(shè)置界面,從而保證軟件可以獲取衛(wèi)星信號(hào)。由于采用定位監(jiān)聽(tīng)器頻繁地獲取位置信息比較耗電,因此軟件采用RequestLocationUpdates方法,設(shè)置間隔20 s自動(dòng)更新位置信息。
(4)顯示距離 在南極,標(biāo)志性的地物不多,利用經(jīng)緯度計(jì)算當(dāng)前位置與記錄位置的距離,有利于用戶定量分析是否到達(dá)目的地。軟件提供顯示距離和隱藏距離的功能,方便用戶把距離信息與圖上標(biāo)記聯(lián)系起來(lái)且不影響界面的顯示效果。
本文結(jié)合南極特殊的位置特點(diǎn)和地理環(huán)境,設(shè)計(jì)并實(shí)現(xiàn)了南極人員定位軟件。該軟件能為南極人員在無(wú)網(wǎng)絡(luò)服務(wù)的通訊盲區(qū)提供實(shí)時(shí)定位與導(dǎo)航功能,為以后開(kāi)發(fā)手機(jī)地圖定位軟件提供了借鑒意義。當(dāng)然,軟件的建立還存在一些問(wèn)題,包括:范圍過(guò)大的地圖會(huì)占用過(guò)多的手機(jī)儲(chǔ)存容量;首次獲取定位數(shù)據(jù)時(shí)間較長(zhǎng)而且比較耗電;功能需要進(jìn)一步完善,比如在有手機(jī)信號(hào)或者網(wǎng)絡(luò)的情況下可以傳送自己的位置等信息,以上問(wèn)題有待于在實(shí)踐過(guò)程中進(jìn)一步將其完善。
致謝數(shù)據(jù)由中國(guó)極地研究中心和中國(guó)南北極數(shù)據(jù)中心“極地科學(xué)數(shù)據(jù)共享平臺(tái)(http://www.chinare.org.cn)”提供,謹(jǐn)致謝忱。
1 溫家洪,王清華,吳健平.地里信息系統(tǒng)在南極考察和研究中的應(yīng)用.極地研究,2001,13(3):217-228.
2 王剛,韓振鏢.面向Android智能移動(dòng)終端的GIS設(shè)計(jì)與實(shí)現(xiàn).測(cè)繪通報(bào),2013,(8):77-80.
3 公磊,周聰.基于Android的移動(dòng)終端應(yīng)用程序開(kāi)發(fā)與研究.計(jì)算機(jī)與現(xiàn)代化,2008,(8):85-89.
4 劉勝前,陳立定,任志剛.基于Android移動(dòng)平臺(tái)和GPS應(yīng)用服務(wù)研究.信息技術(shù),2012,(1):82-85.
5 吳林,熊滔,蔡永香.基于Android手機(jī)的地圖應(yīng)用設(shè)計(jì)與開(kāi)發(fā).城市勘測(cè),2011,(2):16-19.
6 ESRI.ArcGISServer Administrator and Developer Guide.California:ESRIPress,2004.
7 李沛鴻,白東強(qiáng),李營(yíng)營(yíng).基于Android的WebGIS地理定位服務(wù)研究.測(cè)繪通報(bào),2013,(7):99-101.
8 Weng Y H, Sun F S, Grigsby JD.GeoTools:An android phone application in geology.Computers&Geosciences,2012,44:24-30.
9 吳泳鋒.ArcGISAPI for Android案例教程[2011-02-22].http://www.doc88.com/p-59896798582.html.
10 謝翔,荊昊,郭際明.室內(nèi)環(huán)境下手機(jī)GPS定位精度研究.測(cè)繪通報(bào),2012,(8):95-98.