梅 晶 宋 宏 尚文利 周曉鋒
(中國科學(xué)院沈陽自動化研究所1,遼寧 沈陽 110016;中國科學(xué)院研究生院2,北京 100039)
車隊管理系統(tǒng)是指一個以車輛為基礎(chǔ)的后臺應(yīng)用系統(tǒng),它整合車輛數(shù)據(jù)記錄、衛(wèi)星定位和數(shù)據(jù)通信等功能,可為運營商提供簡單、有效的車輛及駕駛員管理方法,為乘客或客戶提供實時的車輛運送信息,并可為管理機構(gòu)提供車輛安全的監(jiān)督管理信息[1]。目前,現(xiàn)實生活中車輛違規(guī)使用、車輛被堵、車輛遭搶劫、公車私用、車輛應(yīng)急調(diào)度不及時等事件時有發(fā)生,而大多數(shù)企事業(yè)單位車隊主要靠人工管理,統(tǒng)計資料不完整,管理漏洞比較多。因此,有必要采用現(xiàn)代高科技手段實現(xiàn)對車輛的跟蹤監(jiān)控及調(diào)度[2-3]。
目前,車隊管理系統(tǒng)與車輛監(jiān)控系統(tǒng)的研究大多將 GPS、GPRS、GIS 三者相結(jié)合[4-7]。其基本原理是先利用安裝在車輛上的車載終端來獲取車輛的位置和狀態(tài)信息;然后通過無線網(wǎng)絡(luò)通信技術(shù)實現(xiàn)數(shù)據(jù)從移動車輛到監(jiān)控中心的傳輸;最后,在監(jiān)控中心的車輛監(jiān)控GIS系統(tǒng)中,以可視化的方式動態(tài)顯示車輛的位置及狀態(tài)信息[3]。目前比較主流的開發(fā)車輛信息管理系統(tǒng)的方法通常是選擇ArcGIS Engine在VB開發(fā)環(huán)境中進行 C/S 模式的開發(fā)[3,8]。
本文中介紹的車隊管理系統(tǒng)可以同時分屏動態(tài)顯示多輛車的運行情況。在開發(fā)本系統(tǒng)時,本文選擇ArcGIS在VS2010開發(fā)環(huán)境中進行B/S架構(gòu)的開發(fā),因為與C/S模式相比,B/S模式更易于集中管理和維護,有更好的易用性和跨平臺性[9]。然后調(diào)用ArcGIS中的 ArcSde、ArcgisServer、ADF 以及 Silverlight API,以模型-視圖 -控制器(model-view-controller,MVC)設(shè)計模式來實現(xiàn)車隊管理調(diào)度系統(tǒng)的開發(fā)。
客車車隊管理系統(tǒng)架構(gòu)如圖1所示。由圖1可以看出,整個系統(tǒng)分為表現(xiàn)層、服務(wù)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和網(wǎng)關(guān),而左側(cè)的瀏覽器、IIS宿主、Windows通信接口(Windows communication foundation,WCF)、數(shù)據(jù)讀寫服務(wù)、Oracle、數(shù)據(jù)接收則分別為各層的表現(xiàn)形式。具體來說,表現(xiàn)層指的是客戶端瀏覽器所呈現(xiàn)的系統(tǒng)用戶交互界面,系統(tǒng)管理人員界面使用WPF(Windows presentation foundation)技術(shù)開發(fā),遠程用戶界面使用微軟Silverlight技術(shù)開發(fā)。服務(wù)層則以IIS為宿主,通過平臺消息服務(wù)總線來進行服務(wù)注冊和服務(wù)調(diào)度。業(yè)務(wù)邏輯層是指以Windows服務(wù)為宿主實現(xiàn)邏輯業(yè)務(wù)的WCF服務(wù)。數(shù)據(jù)訪問層則是指以O(shè)racle為載體的數(shù)據(jù)讀寫服務(wù)。網(wǎng)關(guān)負責(zé)將接收到的GPS數(shù)據(jù)和CAN總線數(shù)據(jù)通過數(shù)據(jù)透傳服務(wù)傳輸?shù)綌?shù)據(jù)庫中。
圖1 客車車隊管理系統(tǒng)架構(gòu)Fig.1 Architecture of the fleet management system for passenger car
在整個系統(tǒng)中,WCF服務(wù)器通過 IIS宿主于Windows Server 2008操作系統(tǒng)。系統(tǒng)采用Web Service技術(shù)和面向服務(wù)架構(gòu)(service oriented architecture,SOA)的理念進行設(shè)計,所有應(yīng)用程序通過訪問WCF服務(wù)器來間接訪問數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù),從而提高企業(yè)內(nèi)部重要數(shù)據(jù)的完整性和安全性。系統(tǒng)包括車輛定位、地圖附加功能、狀態(tài)監(jiān)控、日常維護、遠程診斷、車輛信息管理、報表管理等服務(wù),并通過這些服務(wù)的相互合作實現(xiàn)整體的系統(tǒng)應(yīng)用。
在具體實施中,采用ASP.NET編程框架生成功能強大的Web應(yīng)用程序,并同時采用ADO.NET全新的數(shù)據(jù)訪問方式以及B/S模式。在數(shù)據(jù)管理方面,GPS數(shù)據(jù)庫使用Oracle 10g數(shù)據(jù)庫管理系統(tǒng)進行管理,而ArcGIS地圖數(shù)據(jù)庫則通過ArcSDE把地圖數(shù)據(jù)存放到Oracle中。
客車車隊管理系統(tǒng)主要包括地圖顯示及標注、車輛定位、車輛狀態(tài)顯示、歷史軌跡查詢與回放、實時監(jiān)控、報表管理6個功能模塊。
①地圖顯示及標注。地圖顯示包括地圖放大、縮小、全屏顯示、地圖鷹眼以及分層顯示。而地圖標注是指用戶可在地圖上的任意位置對任意感興趣的點進行增加標注、修改原有標注內(nèi)容和刪除已存在的標注的相關(guān)操作。
②車輛定位。通過用特定符號將被監(jiān)控車輛的地理位置在地圖上顯示出來。系統(tǒng)支持一些鼠標對車輛圖標的操作,如右鍵菜單更換圖標樣式、顯示車輛狀態(tài)信息等。同時,支持全屏和分屏監(jiān)控功能,全屏?xí)r一個屏幕只監(jiān)控一輛車;分屏?xí)r支持多通道分屏監(jiān)控,可以同時動態(tài)顯示多輛車的運行情況。
③車輛狀態(tài)顯示。把鼠標放在所選定的車輛上,就能自動顯示出車輛的速度、行駛方向、車輛的經(jīng)緯度、行駛里程、當(dāng)前時間等基本信息。
④歷史軌跡查詢與回放。通過歷史軌跡頁面提供的查詢條件,選擇需要生成的軌跡;當(dāng)歷史軌跡成功生成后,系統(tǒng)還可以對生成的軌跡進行操作,如暫停、播放、停止、快進等。系統(tǒng)支持車輛在1個月內(nèi)的軌跡查詢。
⑤實時監(jiān)控及預(yù)警。系統(tǒng)先讀取最新的GPS數(shù)據(jù),然后動態(tài)顯示車輛運行狀態(tài),車輛符號隨著車輛運行方向動態(tài)變化。同時系統(tǒng)對車速和車輛行駛范圍進行報警。
⑥報表管理。報表系統(tǒng)可以根據(jù)輸入條件對車輛的分類、性質(zhì)、行駛里程、作業(yè)量等進行查詢統(tǒng)計,還可以靈活定義報表樣式和報表統(tǒng)計項并輸出打印。
由于整個系統(tǒng)采用基于Web的B/S結(jié)構(gòu)設(shè)計,故其管理系統(tǒng)的操作界面均為瀏覽器應(yīng)用界面。系統(tǒng)應(yīng)用服務(wù)器為基于Windows XP/7系統(tǒng)的IIS6.0服務(wù)器(framework3.5),采用 Oracle 10g數(shù)據(jù)庫和 C#語言進行二次開發(fā),通過ArcGIS實現(xiàn)電子地圖的顯示功能。
2.2.1 車輛定位
車輛定位是指先從數(shù)據(jù)庫取數(shù)據(jù),然后用定時器讀數(shù)據(jù),最后用圖片標注的方式顯示位置。即首先選擇ArcGIS提供的一個地圖作為底圖,在上面添加圖層;接下來創(chuàng)建點要素,這些點包括位置信息和屬性信息,把這些點要素加入到相應(yīng)的圖層中;最后把這些圖層覆蓋在底圖地圖上便可實現(xiàn)車輛定位的功能。車輛的搜索直接調(diào)用ArcGIS提供的相應(yīng)API即可。
2.2.2 車輛實時動態(tài)顯示及預(yù)警
根據(jù)所選擇的車輛號,在數(shù)據(jù)庫中得到此車所走的路線,按一定的距離產(chǎn)生緩沖區(qū),從而得到多邊形。若獲得的坐標點在多邊形內(nèi),則說明車輛沒有越界;反之則越界,系統(tǒng)即產(chǎn)生報警信息,同時將越界信息保存到數(shù)據(jù)庫中。
2.2.3 車輛歷史軌跡查詢與回放
利用添加的Web Service項,在其中添加連接數(shù)據(jù)庫,并獲得所需數(shù)據(jù)的函數(shù)代碼。添加服務(wù)引用,再在MainPage.xaml.cs中調(diào)用 Web Service 項中的函數(shù)。利用DispatcherTimer設(shè)置每隔2 s就往GraphicsLayer添加一個點,從而形成歷史軌跡。
為了實時可靠地獲得車輛定位功能中需要的車輛定位和狀態(tài)等信息,本文采用了數(shù)據(jù)透傳服務(wù)。首先系統(tǒng)將從終端接收到的GPS數(shù)據(jù)和CAN總線數(shù)據(jù)傳輸?shù)綌?shù)據(jù)透傳服務(wù)模塊,經(jīng)過數(shù)據(jù)處理后,一部分數(shù)據(jù)直接傳送到數(shù)據(jù)庫,另一部分數(shù)據(jù)通過透傳實時數(shù)據(jù)模塊進行封裝,然后以對象流的方式傳遞到上層服務(wù)模塊,最后以可視化的方式實時顯示。數(shù)據(jù)透傳架構(gòu)圖如圖2所示。通過數(shù)據(jù)透傳方式,最大限度地保證了車輛實時狀態(tài)信息的時效性、可靠性和準確性。
圖2 數(shù)據(jù)透傳架構(gòu)圖Fig.2 Framework of data transparent transmission
歷史軌跡查詢和歷史軌跡播放功能的具體實現(xiàn)方法,分別在類 VehicleTrack.aspx、ForwardTrack、StopTrack、PlayTrack和PauseTrack中被調(diào)用。在生成的車輛歷史軌跡上,采用合理有效的算法,使得用戶可查詢24 h內(nèi)的車輛歷史軌跡,其響應(yīng)時間保證在1 s以內(nèi)甚至更短。歷史軌跡的播放采用多線程處理的方式,提高了運算速度和性能。算法主要是通過從大量的車輛歷史數(shù)據(jù)中選擇用于生成歷史軌跡數(shù)據(jù)的特征數(shù)據(jù)來減少生成軌跡的計算空間。算法描述如下。
①把t0時刻的起始位置作為軌跡開始的位置添加到軌跡中,更新軌跡中當(dāng)前最新的行駛方向d(已存)為t0時刻的車輛行駛方向。
②按時間順序讀取下一條GPS數(shù)據(jù),如果該GPS位置為終點,執(zhí)行步驟⑤,并生成軌跡結(jié)束算法,否則執(zhí)行步驟③。
③判斷該點是否為道路路口或者折線道路的拐角點。如果是,則執(zhí)行步驟⑤,否則執(zhí)行步驟④。
④比較GPS數(shù)據(jù)中記錄的車輛行駛方向d(當(dāng)前)與d(已存)的差值,若|d(當(dāng)前)-d(已存)|>δ(其中δ為閾值),則執(zhí)行步驟⑤,否則執(zhí)行步驟①。
⑤把GPS數(shù)據(jù)代表的位置加入到軌跡之中,更新軌跡中當(dāng)前最新的行駛方向d(已存)為該GPS數(shù)據(jù)中記錄的車輛行駛方向d(當(dāng)前)。
在車輛監(jiān)控過程中,用戶可以在每個屏幕窗口,通過右鍵菜單列表來選擇全屏的退出、分屏模式的選擇和當(dāng)前屏幕所監(jiān)控的車輛,也可以通過每個屏幕頂部的條件查詢選中監(jiān)控車輛。在分屏監(jiān)控時,通過用戶選擇顯示多個屏幕,每個屏幕都是單獨的事件。每個分屏上都可以選定要查詢的車輛同時進行監(jiān)控。分屏監(jiān)控主要是靠類CustomPanel通過Silverlight來編寫實現(xiàn)的,當(dāng)實際使用時,用戶只需要輸入分屏的個數(shù),就可以實時顯示多個屏幕。
本文主要研究了基于ArcGIS的客車車隊管理系統(tǒng),利用C#語言和ArcGIS控件開發(fā)了車隊管理應(yīng)用平臺。系統(tǒng)功能主要有實現(xiàn)車隊的實時動態(tài)定位、監(jiān)控、調(diào)度,從而實現(xiàn)可視化的車輛監(jiān)控調(diào)度和控制;此外還具有地圖標注、車輛編號、分屏顯示等特色。該系統(tǒng)改變了以往過多人工干預(yù)的車輛指揮調(diào)度模式,為人們提供了一種全新的車輛管理手段,有效提高了交通部門及企事業(yè)單位的車隊監(jiān)控調(diào)度管理能力。
[1] Fagerberg J,Ryberg T.Fleet management and wireless M2M[M].Sweden:Berg Insight AB,2010.
[2]雷雨海,王宇.車隊管理信息系統(tǒng)軟件的研究與開發(fā)[J].交通科技與經(jīng)濟,2004(3):53-54.
[3]吳建華.基于ArcGIS Engine的車輛監(jiān)控GIS系統(tǒng)開發(fā)[J].地球信息科學(xué)學(xué)報,2011(1):88-94.
[4]程一沛.基于GPS/GIS/GPRS的車輛監(jiān)控管理系統(tǒng)的設(shè)計與開發(fā)[D].西安:西安科技大學(xué),2009.
[5]賀麗紅.基于GIS/GPS車輛監(jiān)控子系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京交通大學(xué),2009.
[6]王俊,胡平,施濤,等.基于GIS/GPS/GPRS的車輛監(jiān)控系統(tǒng)的實現(xiàn)[J].微計算機信息,2006(9):290 -292.
[7]張書畢,劉作才.基于GIS的GPS車輛監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J].測繪通報,2002(6):31-33.
[8]李春立,曾致遠,徐學(xué)軍.基于ArcGIS Engine的車輛監(jiān)控系統(tǒng)[J].計算機工程,2006,32(24):257 -259.
[9]羅凌.基于.NET組件的車輛調(diào)度系統(tǒng)[J].計算機工程,2008,34(11):275-277.