專利名稱:一種車載gps封閉區(qū)域的定位控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及車載GPS控制技術(shù),尤其是一種封閉區(qū)域的定位控制方法。
背景技術(shù):
近年來,GPS監(jiān)控技術(shù)在各行業(yè)得到了普遍的運用,車載GPS監(jiān)控設(shè)備在各種交通運輸行業(yè)中也得到了深遠的發(fā)展。在駕駛培訓行業(yè),管理單位對車輛需要區(qū)域監(jiān)控,規(guī)定了車輛只能在一個封閉的區(qū)域內(nèi),進入?yún)^(qū)域或者離開這個區(qū)域就要報警。因此設(shè)備需要根據(jù)當前的GPS經(jīng)緯度,判定是否在封閉區(qū)域內(nèi)。在實際工作中,常常假定封閉區(qū)域為一簡單多邊形,因此問題可以歸結(jié)到判定設(shè)備是否在簡單多邊形內(nèi)。設(shè)備每秒鐘都要刷新當前GPS 經(jīng)緯度,也需要每秒鐘根據(jù)當前的GPS經(jīng)緯度判斷設(shè)備是否在封閉區(qū)域內(nèi),這也將會給設(shè)備的CPU帶來沉重的負擔。
發(fā)明內(nèi)容
為了克服已有的車載GPS封閉區(qū)域的定位控制方法的計算復雜、速度慢、占用大量CPU資源的不足,本發(fā)明提供一種簡化計算、速度快、大大減少占用CPU資源的車載GPS 封閉區(qū)域的定位控制方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種車載GPS封閉區(qū)域的定位控制方法,所述封閉區(qū)域為多邊形,所述定位控制方法包括以下步驟(1)構(gòu)建所述多邊形的凸包,步驟為1. 1)在所有點中選取y坐標最小的一點作為基點Ptl,如果存在多個點的y坐標都
為最小值,則選取X坐標最小的一點;然后按照其它各點P和基點構(gòu)成的向量 與X軸
的夾角由小到大進行排序,得到P1, P2,...,如果有相同夾角的情況,則選取與基點距離較遠的點;1. 2)將ρ。,ρι;ρ2,...加入堆棧S,作為堆棧的初始值;1. 3)假如堆棧的棧頂為B,棧頂前的點為Α,加入一個新的點C,計算i與f的叉積是否大于0,如果大于0,則把新點C加入堆棧;如不是,則將B刪除,將C加入堆棧;1. 4)反復執(zhí)行步驟1. 3),直到所有的點都被掃描完;堆棧中保留的點就是凸包的頂點;(2)構(gòu)建所述多邊形的最小面積外接矩形,步驟為2. 1)選取凸包中一條邊作為起始邊并對該凸包選中邊的左端點為中心旋轉(zhuǎn)使該邊平行于坐標橫軸,計算并保存其最小綁定矩形的坐標、該邊的編號及其旋轉(zhuǎn)角度。2. 2)順序選擇其它邊,按照2. 1)的方法計算并保存其最小綁定矩形的最表、該邊的編號及其旋轉(zhuǎn)角度;2. 3)比較所得最小綁定矩形的面積,其中,面積最小者按其記錄的旋轉(zhuǎn)角度以該邊的左端點為中心逆向旋轉(zhuǎn)即為所求的最小面積外接矩形;
(3)定位判斷過程如下3. 1)判斷當前點是否在所述最小面積外接矩形內(nèi),如果點在最小面積外接矩形外,判定當前點不在所述封閉區(qū)域內(nèi);如果點在最小面積外接矩形內(nèi),進入下一步;3. 2)判斷點是否在簡單多邊形內(nèi)。進一步,所述步驟3. 2)包括以下子步驟3. 2. 1)先設(shè)定計數(shù)器count = 0,以待定位設(shè)備所在點為端點,作自左向右的射線 L;3. 2. 2)選取多邊形的一條邊,看點是否在該邊上。如果點在邊上,則直接判定點在多邊形中;如果點不再邊上,則進入下一步;3. 2. 3)判斷該邊是否平行于橫軸,如果平行的話,則直接忽略該邊,選取下一條邊,重復步驟3. 3. 2);如果不平行的話,則進入下一步;3.3.4)判斷該邊是否與射線相交,如果不相交,則選取下一條邊重復步驟 3. 2. 2);如果相交,并且交點不是該邊的下端點,則計數(shù)器count = count+1 ;3. 3. 5)選取完所有邊之后,判斷計數(shù)器count是否為偶數(shù),如果是奇數(shù),則判斷點在多邊形內(nèi);如果count是偶數(shù),則判斷點在多邊形外。再進一步,所述步驟3. 1)中,判斷當前點是否在所述最小面積外接矩形的過程為假設(shè)當前點為P,最小面積外接矩形頂點依逆時針順序分別為Pi、p2、p3、P4,若各點之間滿足條件(^ χ^ζ)·(^ χ^ζ)《0且(^ χ@)·(^ χ^ζ)《0,其中,
UUHUUUULUULJU
P1P為)λ點、P1到點P的向量,T^p4為從點P1到點P4的向量,P2P為從點P2到點P的向量,
UUUUUiUULJUUUUUL
P2P3為JA點P2到點P3的向量,P2P為}λ點P2到點P的向量,P2P1為}λ點P2到點P1的向量, ▽為從點P3到點P的向量,E為從點P3到點P4的向量,符號“ X ”為向量的叉積運算
符,符號“ · ”表示向量的點積運算符,則判定點在最小面積外接矩形內(nèi),否則判定在最小面積外接矩形外。本發(fā)明的技術(shù)構(gòu)思為先作出一個合理的假設(shè)假定封閉區(qū)域的更新頻率是非常低的。這種假設(shè)是合理的,符合實際情況。這意味著封閉區(qū)域所規(guī)定的簡單多邊形不會頻繁改變。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是在簡單多邊形的基礎(chǔ)上構(gòu)建凸包,在凸包上再構(gòu)建矩形。這意味著矩形包含凸包,凸包又包含簡單多邊形。構(gòu)建頂點數(shù)為η的多邊形的凸包的時間復雜度是Ofclogn),而構(gòu)建頂點數(shù)為m(m<n)的凸包的最小面積外接矩形的時間復雜度是0(m2)。在判定的時候,先判定點(設(shè)備)是否在矩形中。如果點不在矩形內(nèi),則可判定設(shè)備在封閉區(qū)域外;如果點在矩形內(nèi),則通過一般的方法判定點是否在簡單多邊形內(nèi)。為了降低CPU計算壓力,把整個范圍內(nèi)的位置判定分為包含多邊形的最小矩形外的判定和最小矩形內(nèi)的判定兩部分。當待判點在矩形外時,所需的時間復雜度為0(1),而傳統(tǒng)的方法的時間復雜度為0(n);當待判點在矩形內(nèi)時,所需的時間復雜度為0(n),與傳統(tǒng)的方法相同。這樣當GPS在矩形外,判定速度比原來的快,計算復雜度低的多;當GPS在多邊形內(nèi),計算速度和復雜度與原來的一樣(只多了點是否在矩形內(nèi)的判定的計算,可以忽略)。這樣就降低了整體判定的運算量,對于經(jīng)常需要重復計算的系統(tǒng)有很好的效果。本發(fā)明的有益效果主要表現(xiàn)在簡化計算、速度快、大大減少占用CPU資源。
圖1是車載GPS封閉區(qū)域的定位控制方法構(gòu)建多邊形最小外接矩形程序的流程圖。圖2是車載GPS封閉區(qū)域的定位控制方法定位判斷程序的流程圖。圖3是構(gòu)建凸包子程序的流程圖。圖4是構(gòu)建凸包的最小面積外接矩形子程序的流程圖。圖5是判斷點是否在簡單多邊形內(nèi)的子程序的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進一步描述。參照圖1 圖5,一種車載GPS封閉區(qū)域的定位控制方法,所述封閉區(qū)域為多邊形, 所述定位控制方法包括以下步驟(1)構(gòu)建所述多邊形的凸包,步驟為1. 1)在所有點中選取y坐標最小的一點作為基點Ptl,如果存在多個點的y坐標都
為最小值,則選取X坐標最小的一點;然后按照其它各點P和基點構(gòu)成的向量 與X軸
的夾角由小到大進行排序,得到P1, P2,...,如果有相同夾角的情況,則選取與基點距離較遠的點;1. 2)將ρ。,ρι;ρ2,...加入堆棧S,作為堆棧的初始值;1. 3)假如堆棧的棧頂為B,棧頂前的點為Α,加入一個新的點C,計算@與f的叉積是否大于0,如果大于0,則把新點C加入堆棧;如不是,則將B刪除,將C加入堆棧;1. 4)反復執(zhí)行步驟1. 3),直到所有的點都被掃描完;堆棧中保留的點就是凸包的頂點;(2)構(gòu)建所述多邊形的最小面積外接矩形,步驟為2. 1)選取凸包中一條邊作為起始邊并對該凸包選中邊的左端點為中心旋轉(zhuǎn)使該邊平行于坐標橫軸,計算并保存其最小綁定矩形的坐標、該邊的編號及其旋轉(zhuǎn)角度。2. 2)順序選擇其它邊,按照2. 1)的方法計算并保存其最小綁定矩形的最表、該邊的編號及其旋轉(zhuǎn)角度;2. 3)比較所得最小綁定矩形的面積,其中,面積最小者按其記錄的旋轉(zhuǎn)角度以該邊的左端點為中心逆向旋轉(zhuǎn)即為所求的最小面積外接矩形;(3)定位判斷過程如下3. 1)判斷當前點是否在所述最小面積外接矩形內(nèi);如果點在最小面積外接矩形外,判定當前點不在所述封閉區(qū)域內(nèi);如果點在最小面積外接矩形內(nèi),進入下一步;3.2)判斷點是否在簡單多邊形內(nèi)。圖1是本發(fā)明的構(gòu)建多邊形的最小面積外接矩形的程序的流程圖。在判定一個點是否在封閉區(qū)域內(nèi)之前,首先獲取簡單多邊形(也就是封閉區(qū)域)的每個頂點的坐標,根據(jù)這些頂點利用Graham掃描法,構(gòu)建包含簡單多邊形的凸包,獲得了凸包的各個頂點的坐標;在凸包的基礎(chǔ)上,求解凸包的最小面積外接矩形。圖2是本發(fā)明的定位判斷程序的流程圖。本發(fā)明將判斷過程分為兩步。第一步,先判斷點是否在多邊形的最小面積外接矩形內(nèi)。如果點在矩形外,則無需作第二步,直接可以判定點在簡單多邊形外;如果點在矩形內(nèi),則還不能得知點是否在簡單多邊形內(nèi),還需要第二步進行判斷。第二步,判斷點是否在簡單多邊形內(nèi)。因為矩形也是一種簡單的多邊形,所以從本質(zhì)上說,上述判斷過程的第一步和第二步其實是一樣的,都是判斷點是否在簡單多邊形內(nèi)。但是矩形是特殊的簡單多邊形,其結(jié)構(gòu)非常簡單、有規(guī)律,判斷點是否在矩形內(nèi)的計算量較一般的簡單多邊形低很多。假設(shè)當前點為P,矩形頂點依逆時針順序分別為Pi、p2、p3、P4,若各點之間滿足條件
- - - - - - - - UULt
(P1P X P1P4) · (P2P X P2P3) < 0且(P2P X P2P1) · (P3P X P3P4)《0,其中,PrP為}λ點 P1
UUUUlUULJUUUUUUi
到點P的向量,TV34為從點P1到點P4的向量,P2戶為從點P2到點P的向量,P2P3為)λ點、
UULJUUUUULUUUUi
P2到點P3的向量,P2P為JA點P2到點P的向量,P2P1為)λ點P2到點P1的向量,P3P為JA點 P3到點P的向量,E為從點P3到點P4的向量,符號“ X ”為向量的叉積運算符,符號“ · ”
表示向量的點積運算符,則判定點在矩形內(nèi),否則判定在矩形外。將原本只需要一步的判斷過程分為兩步,在很大程度上減少判斷所需的計算量。圖3是本發(fā)明的構(gòu)建凸包子程序的流程圖。本發(fā)明利用Graham掃描法構(gòu)建一個簡單多邊形的凸包,步驟為(1)在所有點中選取y坐標最小的一點作為基點IV如果存在多個點的y坐標都為最小值,則選取X坐標最小的一點。然后按照其它各點P和基點構(gòu)成的向量 與X軸
的夾角由小到大進行排序。如果有相同夾角的情況,則選取與基點距離較遠的點,其它點不
^慮O(2)將pQ,P1, ρ2加入堆棧S,作為堆棧的初始值。(3)假如堆棧的棧頂為B,棧頂前的點為Α。加入一個新的點C,計算i與f的叉積是否大于0。如果大于0,則把新點C加入堆棧;如不是,則將B刪除,將C加入堆棧。(4)反復執(zhí)行上步,直到所有的點都被掃描完。這時堆棧中保留的點就是凸包的頂
點ο圖4是本發(fā)明的構(gòu)建簡單多邊形的最小面積外接矩形子程序的流程圖。多邊形最小面積外接矩形有兩個性質(zhì),第一個性質(zhì)是任意一個多邊形的最小面積外接矩形和其凸包的最小面積外接矩形是等價的,第二個性質(zhì)是凸包的最小面積外接矩形至少有一邊經(jīng)過凸包的一邊。依據(jù)這兩個性質(zhì)得到了任意多邊形最小面積外接矩形的算法(1)計算多邊形的最小凸包。(2)選取凸包中一條邊作為起始邊并對該凸包選中邊的左端點為中心旋轉(zhuǎn)使該邊平行于坐標橫軸,計算并保存其最小綁定矩形的坐標、該邊的編號及其旋轉(zhuǎn)角度。(3)順序選擇其它邊,按照第二步的方法計算并保存其最小綁定矩形的面積、該邊的編號及其旋轉(zhuǎn)角度。(4)比較所得最小綁定矩形的面積,其中面積最小者按其記錄的旋轉(zhuǎn)角度以該邊的左端點為中心逆向旋轉(zhuǎn)即為所求的最小面積外接矩形。圖5是本發(fā)明的判斷點是否在簡單多邊形內(nèi)的子程序的流程圖。在本發(fā)明中,判斷的方法是射線法,步驟為
(1)先設(shè)定計數(shù)器count = 0,以設(shè)備所在點為端點,作自左向右的射線L。(2)選取多邊形的一條邊,看點是否在該邊上。如果點在邊上,則直接判定點在多邊形中;如果點不再邊上,則進行下一步。(3)判斷該邊是否平行于橫軸。如果平行的話,則直接忽略該邊,選取下一條邊,重復步驟O);如果不平行的話,則進行下一步。(4)判斷該邊是否與射線相交。如果不相交,則選取下一條邊重復步驟O);如果相交,并且交點不是該邊的下端點,則計數(shù)器count = coimt+1。(5)選取完所有邊之后,判斷計數(shù)器count是否為偶數(shù)。如果是奇數(shù),則可判斷點在多邊形內(nèi);如果count是偶數(shù),則判斷點在多邊形夕卜。
權(quán)利要求
1. 一種車載GPS封閉區(qū)域的定位控制方法,所述封閉區(qū)域為多邊形,其特征在于所述定位控制方法包括以下步驟(1)構(gòu)建所述多邊形的凸包,步驟為(1. 1)在所有點中選取y坐標最小的一點作為基點p0,如果存在多個點的y坐標都為最小值,則選取X坐標最小的一點;然后按照其它各點P和基點構(gòu)成的向量0>與X軸的夾角由小到大進行排序,得到Pl,p2,...,如果有相同夾角的情況,則選取與基點距離較遠的占.(1.2)將?0,?1,?2,...加入堆棧S,作為堆棧的初始值;(1. 3)假如堆棧的棧頂為B,棧頂前的點為A,加入一個新的點C,計算的叉積是否大于0,如果大于0,則把新點C加入堆棧;如不是,則將B刪除,將C加入堆棧;(1.4)反復執(zhí)行步驟1. 3),直到所有的點都被掃描完;堆棧中保留的點就是凸包的頂占.(2)構(gòu)建所述多邊形的最小面積外接矩形,步驟為(2.1)選取凸包中一條邊作為起始邊并對該凸包選中邊的左端點為中心旋轉(zhuǎn)使該邊平行于坐標橫軸,計算并保存其最小綁定矩形的坐標、該邊的編號及其旋轉(zhuǎn)角度。(2. 2)順序選擇其它邊,按照2. 1)的方法計算并保存其最小綁定矩形的最表、該邊的編號及其旋轉(zhuǎn)角度;(2.3)比較所得最小綁定矩形的面積,其中,面積最小者按其記錄的旋轉(zhuǎn)角度以該邊的左端點為中心逆向旋轉(zhuǎn)即為所求的最小面積外接矩形;(3)定位判斷過程如下(3.1)判斷當前點是否在所述最小面積外接矩形內(nèi),如果點在最小面積外接矩形外,判定當前點不在所述封閉區(qū)域內(nèi);如果點在最小面積外接矩形內(nèi),進入下一步;(3. 2)判斷點是否在簡單多邊形內(nèi)。
2.如權(quán)利要求1所述的一種車載GPS封閉區(qū)域的定位控制方法,其特征在于所述步驟3. 2)包括以下子步驟(3.2. 1)先設(shè)定計數(shù)器count = 0,以待定位設(shè)備所在點為端點,作自左向右的射線L ; 3. 2. 2)選取多邊形的一條邊,看點是否在該邊上。如果點在邊上,則直接判定點在多邊形中;如果點不再邊上,則進入下一步;(3. 2. 3)判斷該邊是否平行于橫軸,如果平行的話,則直接忽略該邊,選取下一條邊,重復步驟3. 3. 2);如果不平行的話,則進入下一步;(3.3.4)判斷該邊是否與射線相交,如果不相交,則選取下一條邊重復步驟3. 2. 2);如果相交,并且交點不是該邊的下端點,則計數(shù)器count = count+1 ;(3. 3. 5)選取完所有邊之后,判斷計數(shù)器count是否為偶數(shù),如果是奇數(shù),則判斷點在多邊形內(nèi);如果count是偶數(shù),則判斷點在多邊形外。
3.如權(quán)利要求1或2所述的一種車載GPS封閉區(qū)域的定位控制方法,其特征在于所述步驟3. 1)中,判斷當前點是否在所述最小面積外接矩形的過程為假設(shè)當前點為P,最小面積外接矩形頂點依逆時針順序分別為P” P2> P3、P4,若各點之間滿足條件
全文摘要
一種車載GPS封閉區(qū)域的定位控制方法,封閉區(qū)域為多邊形,包括以下步驟(1)構(gòu)建所述多邊形的凸包;(2)構(gòu)建所述多邊形的最小面積外接矩形;(3)定位判斷過程如下3.1)判斷當前點是否在所述最小面積外接矩形內(nèi),如果點在最小面積外接矩形外,判定當前點不在所述封閉區(qū)域內(nèi);如果點在最小面積外接矩形內(nèi),進入下一步;3.2)判斷點是否在簡單多邊形內(nèi)。本發(fā)明提供一種簡化計算、速度快、大大減少占用CPU資源的車載GPS封閉區(qū)域的定位控制方法。
文檔編號G01S19/42GK102213767SQ201110088548
公開日2011年10月12日 申請日期2011年4月8日 優(yōu)先權(quán)日2011年4月8日
發(fā)明者孟利民, 莊壯, 徐志江, 王佳陽 申請人:杭州普諾科技有限公司, 浙江工業(yè)大學