基于GPS&GPRS車(chē)輛實(shí)時(shí)監控系統的設計
3 服務(wù)器端關(guān)鍵技術(shù)的設計與實(shí)現
3.1 計算行車(chē)路程的方法
系統可以利用Google Maps API計算行車(chē)總路程。首先假設地球作為一個(gè)完美的球體,半徑為常量R=6 378.137 km。計算球面兩點(diǎn)間弧長(cháng)的算法為半徑*弧度,而弧度可以從兩點(diǎn)間的經(jīng)緯度算出。此時(shí),可以利用Google Maps API提供的四個(gè)類(lèi)方法推算出行車(chē)路程。它們分別為返回角度值緯度Glatlng.lat()函數、返回角度值經(jīng)度Glatlng.lng()函數、返回弧度值緯度Glatlng.latRadians()函數和返回弧度值精度Glatlng.lngRadians()函數。

通過(guò)上述公式可以近似求出相鄰兩點(diǎn)間行車(chē)路程,遍歷所有行車(chē)點(diǎn),把相鄰兩點(diǎn)間的行車(chē)路程進(jìn)行疊加,即可近似求出行車(chē)總路程。由于發(fā)送數據的時(shí)間間隔很短,所以通過(guò)這個(gè)算法得出的行車(chē)路程和車(chē)輛實(shí)際行駛的路程公里數基本一致。
3.2 軌跡回放的實(shí)現思想
系統通過(guò)調用數據庫中經(jīng)度和緯度坐標、行駛車(chē)速、時(shí)間等車(chē)輛相關(guān)信息,可以實(shí)現軌跡回放功能。雖然在設計過(guò)程中可以采用直接讀取數據庫數據的方法進(jìn)行軌跡回放,但是考慮到其擴展性遠遠不如XML文檔大,所以該系統采用了從XML文件中讀取數據并通過(guò)繪制Gpolyline折線(xiàn)來(lái)回放行車(chē)路線(xiàn)。實(shí)現該功能必須要預先定義好XML文件結構,這里令polyline為root節點(diǎn)下的一個(gè)子節點(diǎn),在其屬性中規定相應的顏色、邊線(xiàn)寬度等,Polyline節點(diǎn)的子節點(diǎn)為lat,lon,data,speed等,用于定義每個(gè)節點(diǎn)的經(jīng)度、緯度、行車(chē)時(shí)間以及速度等。XML文檔設計好后,使用PHP語(yǔ)言編寫(xiě)了一個(gè)服務(wù)器程序動(dòng)態(tài)讀取數據庫數據和自動(dòng)更新XML文件。編寫(xiě)一個(gè)HTML程序,利用JavaScript解析XML文檔,解析整個(gè)XML文檔就是使用GXmlHttp對象把需要處理的節點(diǎn)取出(創(chuàng )建GXm-lHttp對象非常簡(jiǎn)單,直接調用GXmlHttp.create()方法即可)。利用函數getElementsByTagName()獲取polyline節點(diǎn),通過(guò)函數Node.childNodes[k].node-Name()獲取polyline節點(diǎn)的子節點(diǎn)(變量k表示poly-
line節點(diǎn)下子節點(diǎn)的總數),根據兩點(diǎn)間確定一條直線(xiàn)的公理,循環(huán)讀取數據并繪制行車(chē)軌跡。
評論