劉鑫龍,肖凱
(鎮(zhèn)江市勘察測繪研究院,江蘇 鎮(zhèn)江 212000)
基于Android的公共自行車查詢系統(tǒng)研究
劉鑫龍*,肖凱
(鎮(zhèn)江市勘察測繪研究院,江蘇 鎮(zhèn)江 212000)
基于Android的公共自行車查詢系統(tǒng)利用手機定位、無線網(wǎng)絡(luò)、路徑導(dǎo)航等技術(shù)實現(xiàn)在移動端查詢自行車停靠點位置信息、車輛數(shù)信息和用戶當(dāng)前位置到停靠點路徑導(dǎo)航功能,研究論證了系統(tǒng)的可行性,能夠達(dá)到方便市民使用公共自行車、提高公共自行車使用率的目的。
Android;公共自行車;手機定位;路徑導(dǎo)航
作為鎮(zhèn)江“四大行動”之一的公共自行車服務(wù)系統(tǒng)已經(jīng)投入使用半年多了,給市民出行帶來了極大的方便[1]。雖然有著配套的網(wǎng)站查詢系統(tǒng),但是因為移動端的跨平臺局限性,移動端查詢公共自行車??奎c位置信息和??奎c車輛數(shù)比較困難,而常規(guī)的商業(yè)手機地圖(例如百度,谷歌)由于POI點數(shù)據(jù)更新慢,難以及時添加自行車相關(guān)信息。因此,迫切需要一款有著鎮(zhèn)江自身城市特點,包含公共自行車點位信息的移動端APP。
在當(dāng)今網(wǎng)絡(luò)信息時代,Android、IOS移動端系統(tǒng)的成熟和無線通信網(wǎng)絡(luò)的發(fā)展,使得通過無線移動終端實時查詢公共自行車點位信息成為可能[2]。本文擬開發(fā)基于Android的自行車查詢系統(tǒng),嘗試研究移動端的位置定位[3]、公共自行車POI點查詢和移動端到指定自行車點路徑導(dǎo)航等內(nèi)容,使用戶通過手機等移動設(shè)備實時、快速地查詢公共自行車點位信息,為市民提供最優(yōu)到達(dá)路徑導(dǎo)航,方便市民使用公共自行車。
2.1 系統(tǒng)的軟件界面類型
軟件界面包括歡迎界面、用戶定位界面、地圖瀏覽查詢界面、公共自行車POI點瀏覽界面和路徑導(dǎo)航界面等內(nèi)容[4]。
2.2 系統(tǒng)的功能模塊
系統(tǒng)功能由定位檢索模塊、數(shù)據(jù)管理模塊、信息查看模塊、信息管理模塊組成。具體系統(tǒng)功能如圖1所示[5]。
系統(tǒng)的功能流程圖如圖2所示。

圖1 系統(tǒng)功能圖

圖2 系統(tǒng)功能流程圖
系統(tǒng)地圖采用鎮(zhèn)江市電子地圖,為了進(jìn)行公共自行車POI查詢和路徑導(dǎo)航,需選用ArcGIS Server10和ArcGIS API for Android。
3.1 發(fā)布地圖
鎮(zhèn)江市勘察測繪研究院自主研發(fā)的鎮(zhèn)江市電子地圖已于2013年11月底通過了專家組的驗收,其地圖具有基礎(chǔ)數(shù)據(jù)全、數(shù)據(jù)更新快等特點,因此采用為本系統(tǒng)地圖;公共自行車POI點是實地采集的點位數(shù)據(jù),保證了點位信息的準(zhǔn)確性。為了后期的路徑導(dǎo)航,使用制圖軟件對電子地圖道路數(shù)據(jù)進(jìn)行逐路打斷,保證每條道路是連續(xù)的多段線。
使用ArcGIS Server發(fā)布地圖服務(wù),地圖服務(wù)分為底圖服務(wù)和公共自行車POI點專題圖服務(wù),默認(rèn)的地圖服務(wù)功能是Mapping和KML[6]。發(fā)布專題圖服務(wù)時使用Network Analysis功能,以便進(jìn)行路徑分析。為了快速訪問地圖服務(wù)的功能,在地圖服務(wù)發(fā)布成功后,要進(jìn)行緩存制作,可以根據(jù)需求設(shè)置比例尺 1∶1 128.5, 1∶2 257,1∶4 514,1∶9 028,1∶18 056,1∶36 112等。
3.2 加載底圖
加載底圖使用ArcGIS API for Android中的ArcGISTiledMapServiceLayer和ArcGISLocalTiledLayer。其中,ArcGISTiledMapServiceLayer用來加載ArcGIS Server 發(fā)布的緩存地圖服務(wù)(如圖3所示),首先實例化一個ArcGISTiledMapServiceLayer類,將緩存地圖地址信息賦予實例化后的對象,通過MapView的addLayer方法加載該對象,再根據(jù)緩存命名規(guī)則使用row、col、level 參數(shù)讀取地圖服務(wù)的緩存文件,實現(xiàn)加載arcgisserver的緩存地圖;ArcGISLocalTiledLayer用來加載手機存儲卡中的離線地圖包,以解決在手機端網(wǎng)絡(luò)較差時加載大范圍、低精度地圖時速度慢的問題。

圖3 地圖加載,手機定位,方向指示
在使用手機網(wǎng)絡(luò)讀取遠(yuǎn)程地圖服務(wù)時,必須獲得手機的訪問網(wǎng)絡(luò)權(quán)限 android:name="android.permission.INTERNET"/>
3.3 位置定位
通過使用ContextgetSystem Service,并傳入Context,LOCATION_SERVICE參數(shù)獲取定位管理器實例。重寫LocationListener接口,使其能夠監(jiān)聽定位信息的改變。對LocationManager進(jìn)行初始化,并在它的onCreate()方法中注冊定位監(jiān)聽器。由于GPS定位速度慢,要求室外開闊等條件,這里使用的LocationProvider是“network”(NETWORK_PROVIDER)。
由于手機不是專業(yè)的定位設(shè)備,不可避免地會有定位誤差,電子羅盤是目前多數(shù)手機擁有的硬件設(shè)備,因此考慮在手機定位同時,引入方向指示功能,增加用戶識別自身位置的準(zhǔn)確率。對SensorManager進(jìn)行一些初始化工作,使其能夠通過getSystemService獲取SENSOR_SERVICE電子羅盤服務(wù),重寫電子羅盤監(jiān)聽器接口,把手機朝向變化值轉(zhuǎn)化為角度值,把該數(shù)值運用到代表手機當(dāng)前位置的藍(lán)色三角箭頭上,使其能夠根據(jù)手機朝向變化自身箭頭朝向,達(dá)到方向指示功能(如圖3所示)。
3.4 公共自行車POI點查詢
單獨制作的公共自行車POI點數(shù)據(jù)圖層以“自行車”名字命名,發(fā)布成網(wǎng)絡(luò)服務(wù)后,其網(wǎng)絡(luò)路徑即為"*/ArcGIS/rest/services/自行車/MapServer",在編輯文本框輸入自行車,點擊線路查詢,程序使用字符拼接,生成完整的url,進(jìn)而查詢獲得公共自行車POI點數(shù)據(jù),加載在底圖之上(如圖4所示)。

圖4 獲得公共自行車??奎c信息
3.5 查詢自行車站點信息和車輛數(shù)
ArcGIS API for Android提供了一種ArcGIS FeatureLayer類,能夠在加載底圖同時后臺加載用戶預(yù)感興趣的POI點信息,通過GraphicsLayer的方法getGraphicIDs(float x,float y,int tolerance)來獲取要素,其中x和y是屏幕坐標(biāo),tolerance是容差,通過這個方法可以間接的獲取所需的Graphic對象,在用戶點擊地圖上代表自行車??奎c的圖標(biāo)時,通過getAttributes()方法獲取該??奎c的名稱和自行車數(shù)量等用戶關(guān)注的信息,然后調(diào)用預(yù)先寫好的Callout模板,將信息填充進(jìn)去,以小窗口形式展現(xiàn)給用戶。
3.6 路徑導(dǎo)航
ArcGIS路徑分析至少需要兩個點的位置信息,在進(jìn)行路徑導(dǎo)航時需要事先指定自行車??奎c和用戶當(dāng)前位置,在獲得用戶當(dāng)前位置后,還需要某一自行車??奎c位置信息,在手機地圖上任取一個停靠點作為指定點。在屏幕的onLongPress事件中處理路徑分析功能。
StopGraphic point1=new StopGraphic(p1);
StopGraphic point2=new StopGraphic(p2);
//p1是用戶當(dāng)前位置點,p2是某一自行車??奎c
把兩個點的位置信息賦予NAFeaturesAsFeature實例化后的對象rafaAsFeature,作為路徑分析停靠點要素信息。
NAFeaturesAsFeature rafaAsFeature=new NAFeaturesAsFeature();
rafaAsFeature.setFeatures(new Graphic[]{point1,point2});
為了保證路徑分析結(jié)果能顯示在地理底圖上,需要設(shè)置與底圖相同的空間坐標(biāo)系,同時還需要定義路徑長度單位,這里設(shè)置為米。
rpParameters.setStops(rafaAsFeature);
rpParameters.setOutSpatialReference(wm);
rpParameters.setDirectionsLengthUnit(DirectionsLengthUnit.METERS);
創(chuàng)建一個RoutingTask類的對象,賦予該對象路徑分析地址屬性,調(diào)用solve方法,進(jìn)行路徑分析查詢,將路徑分析獲取的線路、距離等信息涵蓋在mResult里。
RoutingTask rTask=new RoutingTask("http://*/ArcGIS/rest/services/bike/NAServer/Route");
mResult=rTask.solve(rpParameters);
運用繪圖工具,將路線繪制在MapView上,提取mResult線路長度信息,顯示在屏幕上方,如圖5所示。
Graphic routeGraphic = new Graphic(curRoute.getRoute().getGeometry(),routeSymbol);
curDirections.add(String.format("Length:%.1fmiles",rDirection.getText(),rDirection.getLength()));

圖5 路徑導(dǎo)航
本文在分析移動端常規(guī)查詢鎮(zhèn)江市公共自行車相關(guān)信息局限性的基礎(chǔ)上提出基于Android的自行車POI點查詢系統(tǒng),應(yīng)用手機定位、無線網(wǎng)絡(luò)、ArcGIS等相關(guān)技術(shù),實現(xiàn)移動端快速查詢公共自行車??奎c位置、??奎c車輛信息和用戶所在位置到停靠點的路徑導(dǎo)航等功能,為市民“低碳出行”提供便利,提高公共自行車使用率。
本系統(tǒng)還有進(jìn)一步提升空間,后期可以連接鎮(zhèn)江市公共自行車運營公司數(shù)據(jù)庫,實時獲取??奎c當(dāng)前可借車輛和可停車位,為市民使用公共自行車提供參考,節(jié)約市民出行時間。系統(tǒng)還可以創(chuàng)建用戶注冊機制,綁定市民自行車卡,實現(xiàn)在移動端快速查詢自行車卡剩余金額和自行車卡丟失后快速掛失,方便市民使用公共自行車、節(jié)約自行車運營公司管理費用。
[1] 朱瑋,龐宇琦,王德等. 公共自行車系統(tǒng)影響下居民出行的變化與機制研究——以上海閔行區(qū)為例[J]. 城市規(guī)劃學(xué)刊,2012(5).
[2] 韓玉飛,殷旭東. 基于Android的公共自行車查詢系統(tǒng)設(shè)計與實現(xiàn)[J]. 電腦編程技巧與維護(hù),2013(18).
[3] 曹士謙,郝鑫,楊雪琴等. 基于AGPS的公共自行車網(wǎng)點地圖的移動應(yīng)用[J]. 軟件導(dǎo)刊,2011(7).
[4] 李丹,郭文明. 基于Android平臺的無線點餐系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學(xué),2012(1).
[5] 王亞維,徐霞. 基于Android的大學(xué)生兼職系統(tǒng)設(shè)計與實現(xiàn)[J]. 地理空間信息,2013(2).
[6] 劉祥磊,馬靜. 基于ArcEngine的ArcGIS矢量數(shù)據(jù)到KML文件轉(zhuǎn)換方法研究[J]. 國土資源遙感,2007(73).
[7] W.Frank Ableson,Charlie Collins,Robi Sen,Unlocking Android:A Developer's Guide[M]. 人民出版社,2010年4月.
The Research of Public Bike Query System Based on the Android
Liu Xinlong,Xiao Kai
(1.Zhenjiang Institute of Surveying and Mapping Survey,Zhenjiang 212000,China;2.Institute of Surveying and Mapping Engineering of Jiangsu Province,Nanjing 21000,China)
Public bike query system based on the Android utilizes the technology of the telephone location,wireless network,path navigation to achieve the functions such as query the position of the Bicycle parking spots,the number of the bicycle,the route from the location of the telephone to the Bicycle parking spots. The system is proved to be feasible. The system can make a convenient for the citizens to rent and return the bicycle so that it can increase the utilization rate of the bicycle.
android;public bicycle;the telephone location;path navigation
1672-8262(2017)04-42-04
P208.2
B
2016—11—09
劉鑫龍(1988—),男,碩士,工程師,主要從事GIS系統(tǒng)開發(fā)與研究工作。