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