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

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