韓 惠,劉 娜,朱俊文,王 強,潘曉婷
(1.蘭州交通大學(xué) 測繪與地理信息學(xué)院,甘肅 蘭州730070)
當(dāng)前許多城市通過灑水車全天作業(yè)的方式改善城市空氣質(zhì)量,然而由于灑水車作業(yè)時間不確定和作業(yè)區(qū)域的隨機性,導(dǎo)致廣大市民在出行時無法及時進行躲避,對生活造成一定的困擾。若能利用手機進行提前預(yù)警,實現(xiàn)對灑水車的遠程監(jiān)控,實時發(fā)布預(yù)警信息,則可減少灑水車給市民帶來的不便,為出行提供便利。
手機版百度地圖具有很好的系統(tǒng)兼容性,無論使用WiFi或GPS均能進行精準(zhǔn)定位,且提供了離線包以便節(jié)省流量[1]。百度地圖API均由Javascript 語言編寫,用戶使用Javascript 語言即可將百度地圖服務(wù)加載到自己的平臺中,構(gòu)建地點檢索、路線導(dǎo)航定位服務(wù)等地圖應(yīng)用功能[2]。
Android智能操作系統(tǒng)是開源免費的,Android手機占據(jù)了中國市場絕大部分的份額。因此,本文利用百度地圖API開發(fā)了基于Android系統(tǒng)的灑水車智能預(yù)警系統(tǒng),能實現(xiàn)車輛定位和遠程報警等功能[3-4]。
灑水車智能預(yù)警系統(tǒng)由車載終端、GPRS通信網(wǎng)絡(luò)、監(jiān)控中心和電子地圖4個部分組成。
1)車載終端可由車載視頻服務(wù)器、觸摸屏、外接攝像機、通話手柄等多種外接設(shè)備組成,用以接收、發(fā)送GPS定位信息和控制信息。
2)GPRS通信網(wǎng)絡(luò)實現(xiàn)了信息的交互,包括GPRS模塊上傳數(shù)據(jù)到監(jiān)控中心和監(jiān)控中心發(fā)送指令到GPRS模塊。
3)監(jiān)控中心主要負責(zé)與車載終端的通信,以及數(shù)據(jù)的存儲、管理和分析。
4)電子地圖負責(zé)地圖的顯示、定位、緩沖區(qū)分析、報警、發(fā)送短消息等功能。
系統(tǒng)圍繞GIS的二次開發(fā)技術(shù),通過百度地圖Javascript API應(yīng)用程序接口,在Web環(huán)境中構(gòu)建所需的地圖應(yīng)用程序,進而實現(xiàn)對車輛動態(tài)軌跡的顯示和緩沖區(qū)分析。系統(tǒng)設(shè)計流程如圖1所示。
系統(tǒng)開發(fā)模塊包括服務(wù)器端開發(fā)、安卓端開發(fā)和模擬器開發(fā)。
1)服務(wù)器端開發(fā)。利用Java Web開發(fā)技術(shù),使用Servlet+service+JDBC開發(fā)框架,以實現(xiàn)對灑水車位置信息的實時獲取。
2)安卓端開發(fā)。系統(tǒng)實現(xiàn)了兩個activity和一個service。兩個activity功能分別為:輸入IP界面,將IP文本框中的變量賦予安卓項目的全局IP;從service中獲取灑水車位置和使用者位置。一個service功能為通過JSON格式與服務(wù)器端的Servlet進行數(shù)據(jù)交互,并當(dāng)灑水車距離使用者50 m時以手機消息的方式進行推送。
3)模擬器開發(fā)。由于車載終端數(shù)據(jù)無法實時獲得,所以采用模擬器技術(shù)來生成模擬數(shù)據(jù),生成2 000 ms更新一次的灑水車位置數(shù)據(jù)。
JSP+Java Bean開發(fā)模式具有業(yè)務(wù)邏輯與頁面表現(xiàn)分離的特點,在一定程度上增加了程序的維護性和可調(diào)試性[5]。該開發(fā)模式較為簡單,較適合小型項目的快速開發(fā)與運行。
Servlet(Server Applet),全稱為 Java Servlet,是利用Java語言編寫的服務(wù)器端程序[6]。Servlet能交互式地瀏覽和修改數(shù)據(jù),并生成動態(tài)Web內(nèi)容,具體過程包括:①客戶端發(fā)送請求至服務(wù)器端;②服務(wù)器端將請求信息發(fā)送至Servlet;③Servlet 生成響應(yīng)內(nèi)容并傳給服務(wù)器端;④服務(wù)器端將響應(yīng)返回給客戶端。
圖1 系統(tǒng)設(shè)計流程圖
Java數(shù)據(jù)庫鏈接(JDBCJ)是一種Java API,由一組Java語言編寫的類和接口組成,用于執(zhí)行SQL語句[7-8],可為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問。簡而言之,JDBC包括與數(shù)據(jù)庫建立鏈接、發(fā)送操作數(shù)據(jù)庫的語句和處理結(jié)果3個內(nèi)容。
緩沖區(qū)是地理空間目標(biāo)的一種服務(wù)或影響范圍,具體指在點、線、面實體的周圍,自動生成一定寬度的多邊形[9]。緩沖區(qū)分析是一種確定不同地理要素空間鄰近性和接近程度的空間分析方法。
系統(tǒng)的主功能界面主要通過Android.content.res資源類、Android.graphics底層圖形類、Android.view顯示類和Android.widget控件類實現(xiàn),功能模塊包括:
1)加載地圖模塊,基于百度地圖,通過申請百度skld的秘鑰調(diào)用百度地圖,完成地圖的顯示。
2)地圖操作模塊,主要利用封裝好的菜單按鈕,實現(xiàn)地圖的縮放、移動、全圖、測距等基本操作,支持鼠標(biāo)無級縮放和不同級別地圖的切換。
3)車輛監(jiān)控定位模塊,建立一個定位變量,對灑水車車輛位置進行定位,當(dāng)其進入行人位置一定范圍內(nèi)即可發(fā)出警告。該模塊可根據(jù)預(yù)設(shè)范圍向行人發(fā)出預(yù)警信息,利用緩沖區(qū)分析原理設(shè)定預(yù)警范圍,以指定道路一系列有順序的坐標(biāo)為中心軸線,以R=50 m為緩沖區(qū)半徑,生成軸線左右兩側(cè)的緩沖區(qū)邊界點,并自動擬合形成封閉的緩沖區(qū)邊界。當(dāng)灑水車進入緩沖區(qū)邊界時,系統(tǒng)將發(fā)出超限的預(yù)警信息。其關(guān)鍵代碼為:
@Override
protected void onPostExecute(Object result) {
ArrayList< MyLocation> list= JsonTools.
getMyLocations("LatLng",result.toString());
for (int i= 0; i < list.size(); i++) {
float distance= AMapUtils.calculateLineDistance
(new LatLng(latitude, longitude),
new LatLng(list.get(i).getLatitude(),
list.get(i).getLongitude()));
if(distance<50 && fl agTime%0==0){
‘Notification的滾動提示
String tickerText= "My notification, It's a long
text! Hello World desiyo?";
int icon= R.drawable.ic_launcher;
‘contentTitle和contentText均為標(biāo)準(zhǔn)的
Notification View內(nèi)容
‘Notification的內(nèi)容標(biāo)題
String contentTitle="友情提示";
‘Notification的內(nèi)容
String contentText="灑水車來了";
系統(tǒng)主功能界面如圖2所示,包括開啟和關(guān)閉預(yù)警功能按鍵,以及設(shè)置IP地址與指定服務(wù)器鏈接按鍵。當(dāng)灑水車進入行人位置一定范圍內(nèi)時,系統(tǒng)將以短信的形式實現(xiàn)預(yù)警(圖3)。
圖2 灑水車分布示意圖
圖3 預(yù)警手機提示信息
灑水車智能預(yù)警系統(tǒng)基本完成了灑水車智能預(yù)警系統(tǒng)PC端和手機端的開發(fā),實現(xiàn)了數(shù)據(jù)加載,地圖縮放、移動,車輛和行人的定位,緩沖區(qū)分析,預(yù)警等基本功能。通過GPS定位,可在手機上實時顯示車輛位置;通過緩沖區(qū)分析,可判斷行人所在環(huán)境是否出現(xiàn)灑水車;通過手機智能預(yù)警,可達到提醒行人及時躲避灑水車的目的。
系統(tǒng)的主要特色在于利用緩沖區(qū)分析,通過平臺啟動電子圍欄功能,當(dāng)設(shè)備出現(xiàn)在緩沖區(qū)范圍內(nèi)時智能預(yù)警。系統(tǒng)的局限性在于:①系統(tǒng)的主要使用對象為老人和孩子,但老人和孩子一般不會帶手機,可考慮與智能手環(huán)的鏈接;②系統(tǒng)緩沖區(qū)半徑為50 m,具有一定的局限性,可考慮將距離設(shè)置為動態(tài)的,這樣可更好地為行人提供預(yù)警;③系統(tǒng)所使用的實驗數(shù)據(jù)為模擬數(shù)據(jù),真實數(shù)據(jù)獲取困難,今后可考慮使用真實數(shù)據(jù)進行測試,且在系統(tǒng)設(shè)計上可增加路徑分析功能,為灑水車提供最佳路徑。