(成都理工大學(xué) 工程技術(shù)學(xué)院,四川 樂山 614000)
在科技高速發(fā)展的現(xiàn)代社會,城市的交通需求量隨著經(jīng)濟(jì)的快速增長以及人口的爆炸性增長而急劇上升,交通問題越來越成為阻礙城市發(fā)展的重大問題之一。就目前而言,只有優(yōu)先發(fā)展城市的公共交通,通過提高交通的資源利用率才是緩解及解決交通擁堵的重要手段。所以充分使用公共交通減少私家車的出行是目前非常值得研究的一個問題。
因此,在城市化發(fā)展中遇到重大制約時,共享單車的出現(xiàn)將會大大地解決交通擁堵的問題,也是社會發(fā)展的必然產(chǎn)物和趨勢[1]。移動終端在無線通訊技術(shù)和硬件發(fā)展的基礎(chǔ)上不斷的向前發(fā)展,由早期的掌上電腦已經(jīng)發(fā)展為現(xiàn)在的智能手機(jī)和平板電腦。在這個過程中,移動設(shè)備的運(yùn)算和傳輸功能大大地提高,隨著功能的逐漸豐富,在人們生活中也越來越普遍。地理信息系統(tǒng)(GIS)集很多科學(xué)于一體的新興邊緣科學(xué)[2]。它可以對整個地球表層的數(shù)據(jù)進(jìn)行采集、存儲、分析以及通過描述來顯示出來[3]。因此,借助移動設(shè)備會是共享單車較好的選擇。在移動平臺上[4],使用地理信息系統(tǒng)能將智能化發(fā)揮的更好。
基于此,本文利用GIS與智能設(shè)備[5-6],幫助用戶快速方便的查找共享單車的取車與停放站點,加快改善人民群眾的出行方式,貼近綠色生活,更能較好的解決目前共享單車亂停放的混亂現(xiàn)象。因此,文章通過講述系統(tǒng)的基本需求,并且進(jìn)行了詳細(xì)的設(shè)計與系統(tǒng)測試分析,致力解決共享單車的智能化發(fā)展,很好地滿足人民群眾的出行安排,并能夠在一定程度上保證城市交通與城市面貌的井然有序。
GIS(Geographic InformationSyste)簡而言之就是地理信息系統(tǒng),它的主要功能是通過采集、儲存、管理、分析和描述與空間和地理分布相關(guān)的數(shù)據(jù),然后服務(wù)于地理研究和地理決策[7-9]。它既能描述、分析、存儲空間信息理論和方法,又能通過分析運(yùn)用地理模型為解決復(fù)雜問題提供多種地理信息[10-]11?;贕IS強(qiáng)大的數(shù)據(jù)處理和圖形顯示能力,它可以給用戶提供運(yùn)算后的最終結(jié)果。綜上,運(yùn)用GIS技術(shù)進(jìn)行行駛路線的查詢是目前最為行之有效的方法。就目前的情況來看,GIS技術(shù)已經(jīng)運(yùn)用于資源、農(nóng)林牧副漁以及國土等領(lǐng)域。
GIS的開發(fā)模式分為獨(dú)立開發(fā)、單純二次開發(fā)以及集成二次開發(fā)[13]。由于獨(dú)立開發(fā)和單純二次開發(fā)都受到語言和環(huán)境的限制[14]。所以GIS目前的開發(fā)主流方式還是以集成二次開發(fā)方式為主。并且集成二次開發(fā)很好地解決了傳統(tǒng)二次開發(fā)不能脫離GIS軟件環(huán)境單獨(dú)運(yùn)行的問題?;诖耍疚膶⑹褂肁rcGIS for Android開發(fā)。
ArcGIS for Android很好地解決了Google不能訪問自己定制的地圖資源和應(yīng)用問題[15]。它不僅可以顯示導(dǎo)航地圖以及查找地址和位置,而且可以從Arcgis線中搜索有效的 地圖資源,最主要的是它可以在手持設(shè)備中使用GPS。
ArcGIS for Android對于用戶查看地圖、查看附近站點及詳細(xì)信息、顯示所選站點路徑、查看所有站點、能夠根據(jù)情況設(shè)置GPS、路徑導(dǎo)航,對于查看地圖,又有許多手勢操作,例如縮放操作,平移操作,詳細(xì)功能用例圖如圖1所示。
圖1 功能用例圖
服務(wù)端包括網(wǎng)絡(luò)服務(wù)器(IIS)、地理信息服務(wù)器、空間地理數(shù)據(jù)庫等。各個部分相輔相成,向客戶端發(fā)送服務(wù),接受客戶端的請求進(jìn)行相應(yīng)的處理后,返回結(jié)果。系統(tǒng)的部署情況如圖2所示。
圖2 服務(wù)端部署圖
2.2.1 路徑分析
共享單車路徑分析模塊是本系統(tǒng)的核心模塊,該功能主要是指根據(jù)用戶的地理位置,然后給用戶提供最合適的起點與目的地信息,在地圖上快速的查找出符合條件的共享單車網(wǎng)點,并規(guī)劃一條最短路徑顯示給用戶,節(jié)約用戶的時間,方便用戶的出行,這里包括模塊的設(shè)計、界面的顯示,功能的介紹,以及輸入項和輸出項的說明。
(1)模塊設(shè)計。
對路徑分析模塊的具體分析設(shè)計,路徑分析需要與服務(wù)端服務(wù)進(jìn)行交互,且有多個功能需要用到。所以應(yīng)該盡可能簡單、完善的設(shè)計此功能。使用順序圖能很直觀的表明功能的執(zhí)行過程,路徑分析順序圖如圖3所示。
圖3 路徑分析順序圖
(2)界面顯示。
界面能夠顯示查找后的路徑,顯示路徑需要在MapView中。MapView 是ArcGIS Runtime SDK for Android 的核心組件,通過MapView 可以呈現(xiàn)地圖服務(wù)的數(shù)據(jù)。MapView 是Android中ViewGroup的子類,也是ArcGIS Runtime SDK for Android 中的地圖容器,與很多ArcGIS API 中的Map、MapControl類作用是一樣的。直接顯示路徑是很方便的。而顯示的顏色、樣式也都在分析后設(shè)定好,引用此功能的時候就不需要在額外設(shè)定,大大減少了功能模塊之間的耦合性,增強(qiáng)了內(nèi)聚性,比較符合程序的設(shè)計原則,具體的示例如圖4所示。
圖4 路徑顯示圖
(3)功能。
進(jìn)行路徑分析,查找最短路徑,并給出詳細(xì)的行走信息。
(4)輸入項。
路徑分析提供的接口中,需要指定圖像將要在哪個容器中顯示,還需要給出起始點和目標(biāo)站點的坐標(biāo)。接口名稱為route_analysis。
(5)輸出項。
輸出執(zhí)行查找后的結(jié)果,并將結(jié)果返回。
2.2.2 導(dǎo)航
(1)模塊設(shè)計。
對導(dǎo)航模塊的具體分析設(shè)計,導(dǎo)航模塊是建立在路徑分析的基礎(chǔ)上的。它又包含了更加具體的路徑指導(dǎo)和地理編碼功能,如何走,身在哪,讓人一目了然,是一個更加完善的功能。所以為了充分表達(dá)其功能性,選擇活動圖。導(dǎo)航活動圖如圖5所示。
圖5 導(dǎo)航活動圖
首先進(jìn)入導(dǎo)航界面,然后輸入起點和終點,如果輸入錯誤的話系統(tǒng)會提示錯誤,如果輸入正確系統(tǒng)就會進(jìn)行地理編碼,然后進(jìn)行路徑分析和規(guī)劃,把最便捷的路線展示給用戶,以方便用戶以最快最便捷的方式和路線到達(dá)目的地,具體分析如下所示。
(2)界面顯示。
查找到路徑后,能顯示詳細(xì)的路徑信息。如圖6所示。
(3)功能。
進(jìn)行路徑分析,地理編碼,并給出詳細(xì)的行走信息。
(4)輸入項。
路徑導(dǎo)航提供的接口中,需要輸入起始點和目標(biāo)站點的名字。
(5)輸出項。
輸出執(zhí)行查找后的結(jié)果,并將結(jié)果返回。顯示具體信息以及路徑。
圖6 導(dǎo)航輸入圖
2.2.3 顯示站點
顯示站點包括顯示所有站點和顯示附近站點。顯示附近站點需要開啟定位才可以使用。顯示所有站點把地圖中所有站點全部的顯示出來了。
(1)模塊設(shè)計。
顯示所有站點只需要查找出來然后顯示在地圖上即可。顯示周圍站點則需要再進(jìn)行處理。進(jìn)行查找時使用ArcGIS API for Android中的identifyTask提供的接口。IdentifyTask 顧名思義即一個識別任務(wù)類,是用來識別圖層中的要素的。當(dāng)通過手指點擊地圖時獲取地圖上的要素信息,當(dāng)然在識別操作前必須通過使用識別任務(wù)類identifyTask 事先設(shè)置好一組參數(shù)信息,IdentifyTask 接受的輸入?yún)?shù)必須是IdentifyParameters類型的對象,在參數(shù)IdentifyParameters 對象中可以設(shè)置相應(yīng)的識別條件。具體的流程如圖7所示。
圖7 查找順序圖
(2)界面顯示。
查找到站點后,按照操作進(jìn)行顯示,查找附近站點如圖8所示,系統(tǒng)會詳細(xì)的顯示附近的共享單車的數(shù)量以及最便捷的路徑。
圖8 查找附近站點圖
(3)功能。
進(jìn)行要素查找,查詢屬性信息,并顯示出詳細(xì)的站點信息且能與用戶進(jìn)行交互。對于彈出的提示框能夠隨用戶任意的隱藏與顯示,功能的狀態(tài)圖如圖9所示。
圖9 查找站點狀態(tài)圖
(4)輸入項。
查找站點的接口需要提供將要顯示站點的圖層,以及中心點的坐標(biāo)。
(5)輸出項。
輸出執(zhí)行查找后的結(jié)果,并將結(jié)果返回。顯示具體信息包括站點的名稱,自行車數(shù)量,剩余數(shù)量,距此的距離。
2.2.4 要素修改
要素修改主要針對的是修改共享單車要素的單車借出數(shù)量。這是一個非必須功能,目的只是驗證信息顯示的實時性。
(1)模塊設(shè)計。
要素編輯是ArcGIS Runtime SDK for Android 中的很重要的一塊功能,要想實現(xiàn)要素編輯功能,首先必須擁有一個Feature Service 服務(wù),在此基礎(chǔ)上實現(xiàn)手持端數(shù)據(jù)編輯。在客戶端上,通過ArcGISFeatureLayer 圖層進(jìn)行要素的增、刪、改以及查詢操作,還可以為每一個要素添加附件,進(jìn)行要素的附件管理。發(fā)布要素服務(wù)依然需要足夠的資源才能發(fā)布成功。ArcGIS API for Android提供了applyEdits接口,使用applyEdits接口可以實現(xiàn)要素的添加、刪除以及要素的更新操作。
(2)功能。
能進(jìn)行要素的屬性修改,要素編輯順序圖如圖10所示。
圖10 要素修改順序圖
(1)導(dǎo)航測試用例。
導(dǎo)航能夠幫助用戶查找正確的路線圖。需要準(zhǔn)確的起始點與終點,因此對用戶的輸入要求比較高。導(dǎo)航測試用例表如表1所示,比如輸入正確的起點中北大學(xué)和終點傅山酒店,系統(tǒng)就會根據(jù)用戶的輸入情況顯示出路徑和具體的方向,否則系統(tǒng)就會提示操作有誤,實際結(jié)果與預(yù)期的結(jié)果相同。
表1 導(dǎo)航測試用例表
(2)查找所有站點測試。
點擊查找所有站點功能按鈕,會顯示站點,與數(shù)據(jù)庫中的站點相對比,一樣則為正常。所有站點測試用例表如表2所示。
表2 所有站點測試用例表
(3)查找附近站點測試。
當(dāng)點擊查找附近站點功能按鈕,系統(tǒng)就會顯示出站點,否則系統(tǒng)會提示無站點,測試用例表如表3所示,從表中可以看出系統(tǒng)查找附近站點的預(yù)期結(jié)果與實際結(jié)果相同,滿足用戶的需求。
表3 附近站點測試用例表
(4)定位測試。
當(dāng)點擊定位功能按鈕,系統(tǒng)的定位功能就會開啟,然后會顯示定位點,接著用戶可以根據(jù)實際情況判斷定位的準(zhǔn)確度。定位測試用例表如表4所示,從表中可以看出系統(tǒng)實際測試的結(jié)果與預(yù)期的判斷結(jié)果相符,滿足用戶的需求。
表4 導(dǎo)航測試用例表
本文所設(shè)計的系統(tǒng)利用了ArcGIS for Android開發(fā)了共享單車租賃系統(tǒng)的一個部分以及共享單車的站點查詢。同時利用面向?qū)ο蟮某绦蛟O(shè)計方法進(jìn)行開發(fā)移動GIS,系統(tǒng)具有良好的用戶界面與靈活性。并且利用所開發(fā)的系統(tǒng)進(jìn)行了測試與分析,實際的檢測結(jié)果與預(yù)期結(jié)果相符,能夠滿足用戶的需求,并且共享單車的智能化發(fā)展也能在一定程度上保證城市交通與城市面貌的井井有條。相信對未來共享單車租賃系統(tǒng)的發(fā)揮會有很大的幫助。