基于移動(dòng)定位服務(wù)的考勤管理系統(tǒng)
定位執(zhí)行子模塊,系統(tǒng)接收用戶的定位請(qǐng)求,調(diào)用定位SP 提供的定位接口進(jìn)行定位,然后將定位結(jié)果存入數(shù)據(jù)庫(kù)的定位結(jié)果表中。如果定位成功,則定位執(zhí)行子模塊將定位成功的移動(dòng)終端的經(jīng)度和緯度寫(xiě)入定位成功表;如果定位失敗,系統(tǒng)給出提示信息,并將定位失敗的信息寫(xiě)入定位失敗表中,以備查詢(xún)。此外,定位結(jié)束后,定位執(zhí)行子模塊給出提示信息,如:定位結(jié)束、定位成功、定位失敗等信息。在定位執(zhí)行期間,定位執(zhí)行子模塊不能再接受新的定位請(qǐng)求。
范圍搜索子模塊,接受用戶范圍搜索請(qǐng)求,從數(shù)據(jù)庫(kù)中取出定位成功的移動(dòng)終端所在位置信息,查找該移動(dòng)終端是否在設(shè)定的工作區(qū)域內(nèi)。對(duì)于定位成功的移動(dòng)終端,用戶可以隨時(shí)啟動(dòng)、或者設(shè)定時(shí)間來(lái)啟動(dòng)范圍搜索程序,查看某定位成功的移動(dòng)終端是否在工作區(qū)域內(nèi),以獲得員工的考勤情況。
其中范圍搜索算法采用經(jīng)典的點(diǎn)與多邊形關(guān)系判定方法,根據(jù)本系統(tǒng)的實(shí)現(xiàn),具體分為(1)判斷一點(diǎn)是否在一個(gè)圓內(nèi),只需判斷該點(diǎn)與圓心的距離是否小于或等于半徑即可。(2)判斷點(diǎn)是否在多邊形內(nèi),過(guò)該點(diǎn)向x 軸正方向做一條射線,如果該射線與多邊形有奇數(shù)個(gè)交點(diǎn),則該點(diǎn)在多邊形內(nèi),有偶數(shù)個(gè)交點(diǎn)則在多邊形外[13].對(duì)于移動(dòng)終端定位失敗的情況,需要對(duì)該移動(dòng)終端進(jìn)行自動(dòng)周期定位搜索,即,根據(jù)設(shè)定的定位周期和定位次數(shù),在工作區(qū)域內(nèi)對(duì)該移動(dòng)終端定位并進(jìn)行范圍搜索的過(guò)程。圖3 給出了自動(dòng)周期定位搜索流程。
圖3 自動(dòng)周期定位搜索流程圖
GIS 地圖子模塊用于在定位成功后將被定位移動(dòng)終端的位置顯示在數(shù)字地圖上。根據(jù)此功能,考勤管理系統(tǒng)能夠根據(jù)該位置信息為用戶服務(wù),比如在數(shù)字地圖上進(jìn)行指定條件的搜索,獲取搜索結(jié)果的信息等。
該子模塊還具有定位歷史記錄回放功能。
根據(jù)定位和范圍搜索結(jié)果,系統(tǒng)生成移動(dòng)終端對(duì)應(yīng)的員工考勤信息,存儲(chǔ)在數(shù)據(jù)庫(kù)中,從而完成考勤工作。
2.2 員工軌跡回放
本系統(tǒng)還具有根據(jù)查詢(xún)條件顯示所存儲(chǔ)的移動(dòng)終端定位歷史記錄的回放功能,回放方式分為兩種:
(1)按照真實(shí)的定位時(shí)間間隔回放。根據(jù)之前對(duì)用戶的每次定位操作成功后,定位記錄中包含的移動(dòng)終端號(hào)碼、經(jīng)緯度和定位時(shí)間信息,按照定位記錄的原始時(shí)間間隔在地圖上依次顯示移動(dòng)終端的位置。
(2)按照系統(tǒng)設(shè)定的時(shí)間快速回放。用戶可以快速地瀏覽該時(shí)間段內(nèi)的定位記錄,而不考慮真實(shí)的時(shí)間間隔,按照系統(tǒng)配置時(shí)設(shè)定的時(shí)間快速對(duì)某個(gè)移動(dòng)終端在某個(gè)時(shí)間段內(nèi)的定位歷史記錄在數(shù)字地圖上回放。
移動(dòng)終端定位的歷史記錄就是存放在數(shù)據(jù)庫(kù)中的搜索結(jié)果表,在使用定位歷史記錄回放功能時(shí),首先需要根據(jù)用戶指定的回放時(shí)間段和移動(dòng)終端號(hào)碼從數(shù)據(jù)庫(kù)中得到所有的定位記錄,選擇定位回放方式,在數(shù)字地圖上回放被定位設(shè)備的歷史軌跡。
按照真實(shí)定位時(shí)間間隔回放的實(shí)現(xiàn)方式并不能保證時(shí)間間隔完全準(zhǔn)確,由于接口調(diào)用時(shí)間等原因只能保證大致準(zhǔn)確。如果要求快速回放,只需在取得所有符合條件的定位記錄后,按照系統(tǒng)設(shè)定的固定時(shí)間間隔休眠所述線程即可,而不需要做相鄰兩條記錄之間的時(shí)間差運(yùn)算。在兩種回放過(guò)程中,用戶均可以隨時(shí)中止回放。
圖4 給出了按照真實(shí)定位時(shí)間間隔回放定位歷史記錄的工作流程。
圖4 回放定位歷史記錄工作流程
用戶輸入查詢(xún)條件后,系統(tǒng)調(diào)用定位歷史記錄接口,并判斷如果存在符合條件的定位歷史記錄,則啟動(dòng)一個(gè)定位回放線程,將查詢(xún)到的所有定位歷史記錄傳入該線程(該線程中定義了一個(gè)循環(huán)來(lái)顯示定位記錄)。在定位回放線程中判斷記錄的總數(shù)是否大于1,如果總數(shù)大于1,則取出相鄰兩條定位記錄,然后將前一條定位記錄的經(jīng)度和緯度信息傳入GIS 地圖模塊顯示移動(dòng)終端位置的接口,在數(shù)字地圖上顯示被定位移動(dòng)終端的位置,將該線程休眠,休眠的時(shí)間為前面取出來(lái)的相鄰兩條定位記錄的時(shí)間差,這樣做是為了保證回放的時(shí)間間隔與先前定位時(shí)的時(shí)間間隔一致,然后結(jié)束線程休眠,將定位記錄的總數(shù)減1,再次啟動(dòng)一個(gè)定位回放線程,重復(fù)上述操作直至最后一條定位歷史記錄顯示完畢。
3 系統(tǒng)仿真
3.1 仿真環(huán)境
服務(wù)器端軟硬件環(huán)境包括:SUN Fire V440 服務(wù)器,配置2 個(gè)UltraSPAR C IIIi CPU,時(shí)鐘速度為1593MHz,物理內(nèi)存4096MB,操作系統(tǒng)采用SUNSolaris 5.9;應(yīng)用服務(wù)器為WebLogic 8.1 SP5;數(shù)據(jù)庫(kù)采用MySQL 5.0;GIS 服務(wù)器軟件采用MapInfoMapXtreme(R) Java Edition(TM) 4.5.0.采用短信和定位模擬網(wǎng)關(guān)。
客戶端軟硬件環(huán)境包括:PC 機(jī)聯(lián)想啟天M2400;操作系統(tǒng)為Microsoft Windows XP Professional SP2;JDK 1.5.0(Update6)。
3.2 仿真方法
使用CDMA 手機(jī)模擬移動(dòng)終端,每個(gè)模擬終端具備唯一的號(hào)碼。用1 個(gè)模擬用戶并使用模擬程序創(chuàng)建1 至299 個(gè)虛擬用戶,以3 次/分鐘的速率執(zhí)行短信定位業(yè)務(wù)。搜索范圍設(shè)置為多邊形。定位方式采用自動(dòng)定位,自動(dòng)周期定位的時(shí)間間隔為1 分鐘,自動(dòng)周期定位次數(shù)為4 次。在短信和定位模擬網(wǎng)關(guān)的配置中,設(shè)置不同的循環(huán)次數(shù)和間隔時(shí)間,根據(jù)返回的定位信息次數(shù)、總時(shí)間和平均一次定位時(shí)間對(duì)性能進(jìn)行測(cè)試。
3.3 仿真結(jié)果
將模擬移動(dòng)終端隨機(jī)放置于多邊形區(qū)域附近進(jìn)行測(cè)試,定位結(jié)果如表1 所示,在模擬終端數(shù)量相對(duì)較少和相對(duì)較多的兩種情況下,系統(tǒng)均能對(duì)終端進(jìn)行有效定位,其中模擬終端個(gè)數(shù)較多時(shí),定位平均時(shí)間會(huì)下降,而成功率基本保持穩(wěn)定。
表1 移動(dòng)終端定位成功數(shù)量表
評(píng)論