專利名稱:一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種道路拓撲模型的捕獲及分析,完成道路拓撲數(shù)據(jù)轉(zhuǎn)換的方法。
背景技術(shù):
給GPS導(dǎo)航設(shè)備提供導(dǎo)航服務(wù),首先要為它規(guī)劃導(dǎo)航路徑,這就要使用電子地圖。 常見的電子地圖中詳細地描述構(gòu)成道路網(wǎng)本身的各類要素,如行車路線、道路交叉口、立交橋等。電子地圖提供商(以下簡稱圖商)在制作電子地圖時,一般用一條單線表達一條道路;考慮到物理的、法定的隔離欄因素,有會將一條道路抽象為兩條線,用兩條方向相反的雙線分別代表兩個不同的交通流方向。由于存在某些道路一部分是單線表示的,另一部分是雙線表示的現(xiàn)象,單線、雙線的結(jié)合部(匯聚處)不可避免地發(fā)生了一些表達不清的問題。另外,由于圖商制圖錯誤,對于部分應(yīng)該作為路口內(nèi)連接的道路線,沒有制作“路口內(nèi)連接”屬性,因此生成的轉(zhuǎn)向不能被接受;由于圖商制圖錯誤,對于一些應(yīng)該作為環(huán)島的道路線,并沒有制作成“環(huán)島”屬性,而是置為“路口內(nèi)連接”屬性;因此生成的轉(zhuǎn)向在導(dǎo)航路徑規(guī)劃時不能被接受。在導(dǎo)航用電子地圖中,人們最關(guān)心的是道路網(wǎng)絡(luò)的連通關(guān)系,即弧段與結(jié)點之間的拓撲關(guān)系。在應(yīng)用導(dǎo)航電子地圖中的數(shù)據(jù)進行路徑規(guī)劃時,不僅需要使用道路連通性的數(shù)據(jù),還需要使用道路、路口和環(huán)島的詳細交通流走向數(shù)據(jù)。導(dǎo)航用電子地圖數(shù)據(jù)中一項主要的內(nèi)容是路口的轉(zhuǎn)向語音信息。圖商根據(jù)駛?cè)氲缆放c駛出道路之間的轉(zhuǎn)向角度來生成電子地圖中對應(yīng)的轉(zhuǎn)向語音,這種方法對生成簡單路口的轉(zhuǎn)向語音提供了指導(dǎo)性幫助,但是在對比較復(fù)雜的路口播報時,還存在著不完善的地方。比如,單線、雙線的匯聚處存在引線時將導(dǎo)致轉(zhuǎn)向語音播報不合理,同時還有可能存在兩個同方向的轉(zhuǎn)向語音(比如兩個“請右轉(zhuǎn)”),也不能對路口、環(huán)島進行合理的區(qū)分。因此,圖商提供的電子地圖數(shù)據(jù)不能直接用來進行導(dǎo)航路徑的規(guī)劃。因此本發(fā)明提供的一種特定的導(dǎo)航數(shù)據(jù)生成方法,能修正道路兩端的真實角度, 從而生成比較真實的轉(zhuǎn)向角度,最后生成轉(zhuǎn)向語音,同時添加轉(zhuǎn)向后綴音,進一步提高轉(zhuǎn)向語音播報的清晰度。
發(fā)明內(nèi)容
本發(fā)明旨在提供一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,能克服上述圖商提供的電子地圖的缺陷,為導(dǎo)航路徑規(guī)劃提供一份有效的導(dǎo)航電子地圖數(shù)據(jù)。本發(fā)明的技術(shù)方案是一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,包含的過程有過程A,確定電子地圖中單線、雙線匯聚點的出角度;過程B,確定電子地圖中環(huán)島道路線的屬性;過程C,確定電子地圖中路口內(nèi)道路線的屬性;過程D,為電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象;過程E,為電子地圖中每一個道路創(chuàng)建相應(yīng)的有向弧對象;過程F,為電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音。在所述的過程A中,遍歷電子地圖中所有的路口點,找出每一個單線、雙線匯聚處的路口點并計算和保存該路口點的出角度。從而,后續(xù)的處理能提供正確的道路出角度,計算正確的轉(zhuǎn)向角度,生成正確的轉(zhuǎn)向語音。在所述的過程B中,遍歷電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“環(huán)島”而當前為“路口內(nèi)連接”的道路線,將其屬性改為“環(huán)島”。在所述的過程C中,遍歷電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“路口內(nèi)連接”而錯誤設(shè)置的道路線,將其屬性該為“路口內(nèi)連接”。在所述的過程D中,遍歷電子地圖中所有的路口點,若一個路口點是簡單路口點, 則生成并保存一個只關(guān)聯(lián)這個路口點的簡單路口對象;若一個路口點是復(fù)合路口點,則尋找與該路口點在同一個路口的其他復(fù)合路口點,生成并保存一個關(guān)聯(lián)到這些復(fù)合路口點的復(fù)合路口對象;若一個路口點是環(huán)島路口點,則尋找與該路口點在同一個環(huán)島路口的其他環(huán)島路口點,生成并保存一個關(guān)聯(lián)到這些環(huán)島路口點的環(huán)島路口對象。在所述的過程E中,遍歷電子地圖中所有的道路,若一條道路的通行方向為雙向禁行,則不對該道路做處理;若一條道路的通行方向為順向,則生成并保存一條與該道路幾何流方向相同的有向?。蝗粢粭l道路的通行方向為逆向,則生成并保存一條與該道路幾何流方向相反的有向??;若一條道路的通行方向為雙向可行,則生成并保存一條與該道路幾何流方向相同的有向弧,和一條與該道路幾何流方向相反的有向弧。注意,環(huán)島的道路和路口內(nèi)連接的道路不創(chuàng)建有向弧。在所述的過程F中,遍歷電子地圖中所有的有向弧;若一條有向弧終點的類型是簡單路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,分別為每個所述的出弧生成并保存一個簡單路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個簡單路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的簡單路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是復(fù)合路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個路口的其他復(fù)合路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成一個復(fù)合路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個復(fù)合路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的復(fù)合路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是環(huán)島路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個環(huán)島路口的其他環(huán)島路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成并保存一個環(huán)島路口轉(zhuǎn)向?qū)ο螅鶕?jù)轉(zhuǎn)向角度為每個環(huán)島路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的環(huán)島路口轉(zhuǎn)向?qū)ο笊珊缶Y音。本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法,通過過程A,確定電子地圖中單線、雙線匯聚點的出角度;解決了圖商提供的電子地圖單線、雙線匯聚處表達不清的問題。通過過程 B,確定電子地圖中環(huán)島道路線的屬性;和過程C,確定電子地圖中路口內(nèi)道路線的屬性;解決了圖商提供的電子地圖中道路屬性錯誤的問題。通過過程D,為電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象;過程E,為電子地圖中每一個有向弧創(chuàng)建相應(yīng)的有向弧對象;過程F, 為電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音。解決了圖商提供的電子地圖中路口和環(huán)島的交通流走向不夠詳細的問題。本發(fā)明能修正道路兩端的真實角度,從而生成比較真實的轉(zhuǎn)向角度,最后生成轉(zhuǎn)向語音,同時添加轉(zhuǎn)向后綴音,進一步提高轉(zhuǎn)向語音播報的清晰度,生成的導(dǎo)航電子地圖數(shù)據(jù)可以完全滿足精細的導(dǎo)航道路規(guī)劃的需要。從而在根本上解決了圖商提供的電子地圖不能用于導(dǎo)航道路規(guī)劃的問題。
圖1為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法中單線、雙線匯聚的示意圖。圖2為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法中一種路口內(nèi)連接的示意圖。圖3為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法中另一種路口內(nèi)連接的示意圖。圖4為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法中單線、雙線匯聚點出角度的示意圖。圖5為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法中單線、雙線匯聚點轉(zhuǎn)向角度的示意圖。圖6為本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法一個實施例總體的過程示意圖。圖7為圖6實施例中過程A的流程圖。圖8是雙線匯聚模型1的模型圖。圖9是雙線匯聚模型2的模型圖。圖10是雙線匯聚模型3的模型圖。圖11是圖6實施例中過程B的流程圖。圖12是圖6實施例中過程C的流程圖。圖13是路口內(nèi)連接雙線模型的模型圖。圖14是路口內(nèi)連接主輔道伴生模型的模型圖。圖15是路口內(nèi)連接輔道相夾模型的模型圖。圖16是圖6實施例中過程D的流程圖。圖17是圖16中創(chuàng)建復(fù)合路口對象的流程圖。圖18是圖16中創(chuàng)建環(huán)島路口對象的流程圖。圖19是圖6實施例中過程F的流程圖。圖20是圖19中創(chuàng)建簡單路口轉(zhuǎn)向?qū)ο蟮牧鞒虉D。圖21是圖19中創(chuàng)建復(fù)合路口轉(zhuǎn)向?qū)ο蟮牧鞒虉D。圖22是圖19中創(chuàng)建環(huán)島路口轉(zhuǎn)向?qū)ο蟮牧鞒虉D。
具體實施例方式一、實施例一先說明我們將要或已經(jīng)使用的名詞。引線雙線匯聚出角度異常的部分。圖1中,單線al(即實際的主路al)至雙線 bl(即實際的輔道bl)構(gòu)成了一個轉(zhuǎn)向,實際是一個直行轉(zhuǎn)向,但由于制圖原因,造成雙線b 出角度異常,我們把這類引起雙線bl (輔道bl)出角度異常的部分,也就是Cl路段,稱為引線。路口內(nèi)連接由于雙線的存在,往往在路口處會交匯形成屬于路口內(nèi)部的道路線。 如圖2和圖3中虛線部分代表著路口內(nèi)的道路線,這些道路線的屬性是路口內(nèi)連接。
簡單路口點沒有連接環(huán)島道路線和路口內(nèi)道路線的路口點;復(fù)合路口點沒有連接環(huán)島道路線,但至少連接一條路口內(nèi)道路線的路口點;環(huán)島即實際的轉(zhuǎn)盤。環(huán)島內(nèi)的道路線,其屬性為環(huán)島。環(huán)島路口點連接環(huán)島道路線的路口點。幾何流道路點集的保存順序。交通流道路實際可通行的方向,由道路通行方向與幾何流方向來共同決定,道路通行方向與幾何流方向相同為順向,道路通行方向與幾何流方向相反為逆向。出角度如圖4所示,單線a4關(guān)于點P4的出角度,指的是在單線a4上,路口點P4 及它的下一個點A4構(gòu)成的角度(角度范圍在0 360度之間,以正東為0度);同理,雙線 b4關(guān)于路口點P4的出角度,指的是在b4上,路口點P4及它的下一個點B4構(gòu)成的角度(角度范圍在0 360度之間,以正東為0度)。轉(zhuǎn)向角度如圖5所示,單線a5到雙線沾的轉(zhuǎn)向角度,即單線a4關(guān)于路口點P5 的出角度到雙線沾關(guān)于路口點P5的出角度之間的角度差(角度差范圍在0 360度之間)。圖5中角度A5就是單線a5到雙線c5的轉(zhuǎn)向角度。本發(fā)明生成導(dǎo)航電子地圖數(shù)據(jù)的方法一個實施例總體的過程,如圖6所示。過程A,確定電子地圖中單線、雙線匯聚點的出角度;過程B,確定電子地圖中環(huán)島道路線的屬性;過程C,確定電子地圖中路口內(nèi)道路線的屬性;過程D,為電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象;過程E,為電子地圖中每一個道路創(chuàng)建相應(yīng)的有向弧對象;過程F,為電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音。過程A遍歷電子地圖中所有的路口點,找出每一個單線、雙線匯聚處的路口點并計算和保存該路口點的出角度。確定電子地圖中單線、雙線匯聚點的出角度的具體流程,如圖7所示。步驟200,進入本過程,轉(zhuǎn)步驟201。步驟201,將圖商的電子地圖導(dǎo)入內(nèi)存中,從內(nèi)存中的電子地圖的路口點集合中順序取出一個路口點,轉(zhuǎn)步驟202。步驟202,檢查該路口點是否為空,是則所有路口點已全部遍歷完畢,轉(zhuǎn)步驟208 ;否則,轉(zhuǎn)步驟203。步驟203,檢查該路口點是否連接著兩條雙線,是則轉(zhuǎn)步驟204 ;否則轉(zhuǎn)步驟201。步驟204,檢查這兩條雙線的匯聚模型是否滿足圖8所示的模型1,是則這兩條雙線是兩條路口內(nèi)的道路線,無需對這兩條雙線進行角度修正,轉(zhuǎn)步驟201 ;否則轉(zhuǎn)步驟205。模型1中,雙線a8,b8匯聚于路口點S8處,其特征是1、雙線a8,b8長度有一定限制(比如小于100米);2、a8, b8可以是一序列近似直行的道路集合;3、從流出弧a8判斷,能在路口點A8處,發(fā)現(xiàn)路段c8與流入弧b8平行,路段d8與流出弧a8同向。而從流入弧b8出發(fā)考察,有類似結(jié)果。步驟205,檢查這兩條雙線的匯聚模型滿足圖9所示的模型2,是則這兩條雙線與一條單線匯聚,應(yīng)對這兩條雙線進行角度修正,轉(zhuǎn)步驟206 ;否則轉(zhuǎn)步驟207。模型2中,雙線a9,b9匯聚于路口點S9處,其特征是1、雙線a9,b9的引線長度有一定限制(比如小于50米);2、雙線a9,b9引線間的夾角須滿足一定的范圍(比如^0, 95]) ;3、雙線a9,b9的引線部分可以是只有兩個點,也可以是一些近似平行的折線段的集合;4、雙線a9,b9引線部分之外的真實角度必須保持嚴格平行(比如角度差在2度范圍內(nèi)),這兩個角度就作為雙線a9,b9真實的出角度。步驟206,重新確定并保存這兩條雙線的出角度,轉(zhuǎn)步驟201。步驟207,檢查這兩條雙線的匯聚模型是則滿足圖10所示的模型3,是則這兩條雙線與一條單線匯聚,應(yīng)對這兩條雙線進行角度修正,轉(zhuǎn)步驟206 ;否則轉(zhuǎn)步驟201。模型3中,雙線al0,bl0匯聚于路口點SlO處,其特征是1、雙線al0,bl0的引線可以獨立成為一個路段(圖10中的路段C 10) ;2、雙線alO,blO的引線長度有一定限制 (比如小于50米);3、雙線alO,blO引線間的夾角須滿足一定的范圍(比如[40,95]) ;4、 雙線alO,blO的引線部分可以是只有兩個點,也可以是一些近似平行的折線段的集合;5、 為每個雙線創(chuàng)建一個真實角度數(shù)組,若該雙線的引線沒有獨立成為一個路口,則其真實角度數(shù)組大小為1,保存的是該雙線的真實出角度;若該雙線的引線獨立成為一個路段,則找出其關(guān)聯(lián)的所有雙線,將這些出角度全部保存到其真實角度數(shù)組中。在這兩個數(shù)組中,若存在嚴格平行的真實角度,則將這兩個角度作為雙線alO,blO的真實角度。步驟208,退出本過程。過程B遍歷內(nèi)存中的電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“環(huán)島”而當前為“路口內(nèi)連接”的道路線,將其屬性改為“環(huán)島”。確定內(nèi)存中的電子地圖中環(huán)島道路線的屬性的具體流程,如圖11所示。步驟300,進入本過程,轉(zhuǎn)步驟301。步驟301,從內(nèi)存中的電子地圖的道路集合中順序取出一條道路,轉(zhuǎn)步驟302。步驟302,檢查該道路是否為空,是則所有道路已全部遍歷完畢,轉(zhuǎn)步驟313 ;否則,轉(zhuǎn)步驟303。步驟303,檢查該道路是否是環(huán)島,是則轉(zhuǎn)步驟301 ;否則轉(zhuǎn)304。步驟304,設(shè)置該道路為起始道路,轉(zhuǎn)步驟305。步驟305,在內(nèi)存中的電子地圖中找出當前道路終點關(guān)聯(lián)的道路集合,并按出角度排序;逆時針遍歷當前道路終點關(guān)聯(lián)的道路集合,轉(zhuǎn)步驟306。步驟306,檢查當前道路終點關(guān)聯(lián)的道路集合中是否有環(huán)島道路(只取一條環(huán)島道路),是則轉(zhuǎn)步驟307 ;否則轉(zhuǎn)步驟309。步驟307,檢查該環(huán)島道路是否是起始道路,是則轉(zhuǎn)步驟301 ;否則轉(zhuǎn)步驟308。步驟308,將該環(huán)島道路設(shè)為當前道路,轉(zhuǎn)步驟305。步驟309,重新逆時針遍歷當前道路終點關(guān)聯(lián)的道路集合,轉(zhuǎn)步驟310。步驟310,檢查當前道路終點關(guān)聯(lián)的道路集合中是否有路口內(nèi)道路,且該路口內(nèi)道路與當前道路近似平行,是則轉(zhuǎn)步驟311 ;否則轉(zhuǎn)步驟312。步驟311,將該路口內(nèi)道路的屬性修改為環(huán)島,轉(zhuǎn)步驟308。步驟312,提示環(huán)島不閉合警告,轉(zhuǎn)步驟301。步驟313,,退出本過程。過程C遍歷內(nèi)存中的電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“路口內(nèi)連接”而錯誤設(shè)置的道路線,將其屬性該為“路口內(nèi)連接”。確定內(nèi)存中的電子地圖中路口內(nèi)道路線屬性的具體流程,如圖12所示。步驟400,進入本過程,轉(zhuǎn)步驟401。步驟401,從內(nèi)存中的電子地圖的道路集合中順序取出一條道路,轉(zhuǎn)步驟402。步驟402。檢查該道路是否為空,是則所有道路已全部遍歷完畢,轉(zhuǎn)步驟408 ;否則,轉(zhuǎn)步驟403。步驟403,檢查該道路是是路口內(nèi)道路,是則轉(zhuǎn)步驟401 ;否則轉(zhuǎn)步驟404。步驟403,檢查該道路是否滿足圖13所示的雙線模型,是則轉(zhuǎn)步驟407 ;否則轉(zhuǎn)步驟 405。在雙線模型中,點P1P2之間的道路夾在雙線之中,其特征是1、點P1P2之間的道路可以是一序列無分歧道路線集合,在這集合中,除點P1P2外,其他的道路起終點不連接雙線、環(huán)島,且彼此之間的夾角滿足一定范圍(比如小于15度);2、無分歧道路線集合的總長度必須滿足一定范圍(比如小于100米);3、無分歧道路線集合的起終點道路與雙線不平行(夾角大于15度);4、至少存在一對左進、左出雙線,或者右進、右出雙線,且它們近似平行(夾角小于15度)。步驟405,檢查該道路是否滿足圖14所示的主輔道伴生模型,是則轉(zhuǎn)步驟407 ;否則轉(zhuǎn)步驟406。在主輔道伴生模型中,點P1P2構(gòu)成的道路夾在主輔道之間,其特征是1、該道路的長度必須滿足一定范圍(比如小于100米);2、存在一對平行的道路線,分別是主道和輔道,且它們與點P1P2構(gòu)成的道路不平行。步驟406,檢查該道路是否滿足圖15所示的輔道相夾模型,是則轉(zhuǎn)步驟407 ;否則轉(zhuǎn)步驟401。在輔道相夾模型中,點P1P2之間的道路夾在兩條輔道之中,其特征是1、點P1P2之間的道路可以是一序列無分歧道路線集合,在這集合中,除點P1P2外,其他的道路起終點不連接輔道、環(huán)島,且彼此之間的夾角滿足一定范圍(比如小于15度);2、無分歧道路線集合的總長度必須滿足一定范圍(比如小于100米);3、無分歧道路線集合的起終點道路與輔道不平行(夾角大于15度);4、至少存在一對左進、左出輔道,或者右進、右出輔道,且它們近似平行(夾角小于15度)。步驟407,將該道路的屬性修改為路口內(nèi)連接,轉(zhuǎn)步驟401。步驟408,退出本過程。過程D遍歷內(nèi)存中的電子地圖中所有的路口點,若一個路口點是簡單路口點,則生成并保存一個只關(guān)聯(lián)這個路口點的簡單路口對象;若一個路口點是復(fù)合路口點,則尋找與該路口點在同一個路口的其他復(fù)合路口點,生成并保存一個關(guān)聯(lián)到這些復(fù)合路口點的復(fù)合路口對象;若一個路口點是環(huán)島路口點,則尋找與該路口點在同一個環(huán)島路口的其他環(huán)島路口點,生成并保存一個關(guān)聯(lián)到這些環(huán)島路口點的環(huán)島路口對象。為內(nèi)存中的電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象的具體流程,如圖16所示。步驟500,進入本過程,轉(zhuǎn)步驟501。步驟501,從內(nèi)存中的電子地圖的路口點集合中順序取出一個路口點,轉(zhuǎn)步驟 502。步驟502,檢查該路口點是否為空,是則所有路口點已全部遍歷完畢,轉(zhuǎn)步驟510 ;否則,轉(zhuǎn)步驟503。步驟503,檢查該路口點是否是簡單路口點,是則轉(zhuǎn)步驟504 ;否則轉(zhuǎn)步驟505。步驟504,創(chuàng)建簡單路口對象,生成并保存一個只關(guān)聯(lián)這個路口點的簡單路口對象,轉(zhuǎn)步驟501。步驟505,檢查該路口點是否是復(fù)合路口點是則,轉(zhuǎn)步驟506 ;否則,轉(zhuǎn)步驟507。步驟506,執(zhí)行創(chuàng)建復(fù)合路口對象的子過程,轉(zhuǎn)步驟501。步驟507,檢查該路口點是否是環(huán)島路口點,是則轉(zhuǎn)步驟508 ;否則轉(zhuǎn)步驟509。步驟508,執(zhí)行創(chuàng)建環(huán)島路口對象的子過程,轉(zhuǎn)步驟501。步驟509,提示存在未知路口模型,轉(zhuǎn)步驟501。步驟510,退出本過程。創(chuàng)建復(fù)合路口對象的子過程的具體流程,如圖17所示。步驟600,進入本子過程,設(shè)置一個開表和一個閉表;轉(zhuǎn)步驟601。步驟601,將該復(fù)合路口點保存到開表中,將閉表置空,轉(zhuǎn)步驟602。步驟602,檢查該開表是否為空,是則轉(zhuǎn)步驟607 ;否則轉(zhuǎn)步驟603。步驟603,從開表取出復(fù)合路口點,將該點加入閉表,轉(zhuǎn)步驟604。步驟604,在內(nèi)存中的電子地圖的道路集合中遍歷該點關(guān)聯(lián)的其它道路,轉(zhuǎn)步驟 605。步驟605,檢查上述道路中是否若存在路口內(nèi)道路,且該路口內(nèi)道路的另一個端點不屬于閉表,是則轉(zhuǎn)步驟606 ;否則轉(zhuǎn)步驟602。步驟606,將該路口內(nèi)道路不屬于閉表的端點保存到開表,轉(zhuǎn)步驟602。步驟607,為該復(fù)合路口點創(chuàng)建一個復(fù)合路口對象,該復(fù)合路口對象關(guān)聯(lián)的復(fù)合路口點為閉表中的點;轉(zhuǎn)步驟608。步驟608,退出本子過程。創(chuàng)建環(huán)島路口對象的子過程的具體流程,如圖18所示。步驟700,進入子本過程,轉(zhuǎn)步驟701。步驟701,將該環(huán)島路口點設(shè)為起始環(huán)島路口點,轉(zhuǎn)步驟702。步驟702,將該環(huán)島路口點加入到環(huán)島路口點數(shù)組中,轉(zhuǎn)步驟703。步驟703,在內(nèi)存中的電子地圖的道路集合中獲取與該環(huán)島路口點關(guān)聯(lián)的道路集合,并按道路出角度對它們進行逆時針排序,轉(zhuǎn)步驟704。步驟704,檢查該與該環(huán)島路口點關(guān)聯(lián)的道路集合中是否存在相對于該環(huán)島路口點是入弧的環(huán)島道路,且從該環(huán)島道路逆時針方向的下一條環(huán)島道路是出弧,是則轉(zhuǎn)步驟 705,否則轉(zhuǎn)步驟707。步驟705,取該出弧(該環(huán)島道路逆時針方向的下一條環(huán)島道路)的另一個端點為當前環(huán)島路口點,轉(zhuǎn)步驟706。步驟706,檢查當前環(huán)島路口點是否是起始環(huán)島路口點,是則轉(zhuǎn)步驟707,否則轉(zhuǎn)步驟702。步驟707,為該環(huán)島路口點創(chuàng)建一個環(huán)島路口對象,該環(huán)島路口對象關(guān)聯(lián)的路口點為環(huán)島路口點數(shù)組中的點,轉(zhuǎn)步驟708。步驟708,退出本子過程。
過程E,為內(nèi)存中的電子地圖中每一個有向弧創(chuàng)建相應(yīng)的有向弧對象;遍歷內(nèi)存中的電子地圖中所有的道路,若一條道路的通行方向為雙向禁行,則不對該道路做處理;若一條道路的通行方向為順向,則生成并保存一條與該道路幾何流方向相同的有向弧;若一條道路的通行方向為逆向,則生成并保存一條與該道路幾何流方向相反的有向?。蝗粢粭l道路的通行方向為雙向可行,則生成并保存一條與該道路幾何流方向相同的有向弧,和一條與該道路幾何流方向相反的有向弧。過程F遍歷內(nèi)存中的電子地圖中所有的有向?。蝗粢粭l有向弧終點的類型是簡單路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,分別為每個所述的出弧生成并保存一個簡單路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個簡單路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的簡單路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是復(fù)合路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個路口的其他復(fù)合路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成一個復(fù)合路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個復(fù)合路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的復(fù)合路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是環(huán)島路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個環(huán)島路口的其他環(huán)島路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成并保存一個環(huán)島路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個環(huán)島路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的環(huán)島路口轉(zhuǎn)向?qū)ο笊珊缶Y音。最終在內(nèi)存中的電子地圖中生成導(dǎo)航電子地圖數(shù)據(jù)。為內(nèi)存中的電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音的具體流程,如圖19所示。步驟800,進入本過程,轉(zhuǎn)步驟801。步驟801,從內(nèi)存中的電子地圖的有向弧集合中順序取出一條有向弧,轉(zhuǎn)步驟 802。步驟802,檢查該有向弧是否為空,是則所有的有向弧已全部遍歷完畢,轉(zhuǎn)步驟 810 ;否則,轉(zhuǎn)步驟803。步驟803,檢查該有向弧的終點是否是簡單路口點,是則轉(zhuǎn)步驟804;否則轉(zhuǎn)步驟 805。步驟804,執(zhí)行創(chuàng)建簡單路口轉(zhuǎn)向?qū)ο蟮淖舆^程,轉(zhuǎn)步驟801。步驟805,檢查該有向弧的終點是否是復(fù)合路口點,是則轉(zhuǎn)步驟806;否則,轉(zhuǎn)步驟 807。步驟806,執(zhí)行創(chuàng)建復(fù)合路口轉(zhuǎn)向?qū)ο蟮淖舆^程,轉(zhuǎn)步驟801。步驟807,檢查該弧的終點是否是環(huán)島路口點,是則轉(zhuǎn)步驟808 ;否則轉(zhuǎn)步驟809。步驟808,執(zhí)行創(chuàng)建環(huán)島路口轉(zhuǎn)向?qū)ο蟮淖舆^程,轉(zhuǎn)步驟801。步驟809,提示存在未知路口類型,轉(zhuǎn)步驟801。步驟810,,退出本過程。創(chuàng)建簡單路口轉(zhuǎn)向?qū)ο蟮淖舆^程的具體流程,如圖15所示。步驟900,進入本子過程,轉(zhuǎn)步驟901。步驟901,檢查該簡單路口是否滿足右轉(zhuǎn)專用道模型,是則轉(zhuǎn)步驟902,是則轉(zhuǎn)步驟 903。
右轉(zhuǎn)專用道模型的特征是1、該簡單路口點只連接3條道路;2、該簡單路口點連接的道路中,沿起始弧逆時針遍歷到的第一條道路為右轉(zhuǎn)專用道。步驟902,生成兩個轉(zhuǎn)向?qū)ο螅瑸橛肄D(zhuǎn)專用道生成的第一個轉(zhuǎn)向?qū)ο蟮霓D(zhuǎn)向語音為右轉(zhuǎn)專用道專門語音(比如沿右轉(zhuǎn)專用道右轉(zhuǎn)),為另一條前進道路生成的第二個轉(zhuǎn)向?qū)ο蟾鶕?jù)轉(zhuǎn)向角度生成對應(yīng)的轉(zhuǎn)向語音。轉(zhuǎn)步驟914。步驟903,檢查起始弧對應(yīng)的道路是否是右轉(zhuǎn)專用道,是則轉(zhuǎn)步驟904 ;否則轉(zhuǎn)步驟 905。步驟904,在內(nèi)存中的電子地圖中遍歷起始弧終點關(guān)聯(lián)的其他出弧,若起始弧到出弧的轉(zhuǎn)向角度滿足一定范圍(比如小于195度),則為起始弧對應(yīng)的道路生成轉(zhuǎn)向語音為空的轉(zhuǎn)向?qū)ο螅D(zhuǎn)向語音為空;否則,不為起始弧對應(yīng)的道路生成轉(zhuǎn)向?qū)ο?,轉(zhuǎn)步驟914。步驟905,檢查起始弧對應(yīng)的道路是否是左轉(zhuǎn)專用道,是則轉(zhuǎn)步驟906 ;否則轉(zhuǎn)步驟 907。步驟906,在內(nèi)存中的電子地圖中遍歷起始弧終點關(guān)聯(lián)的其他出弧,若起始弧到出弧的轉(zhuǎn)向角度滿足一定范圍(比如大于180度,小于270度),則為起始弧對應(yīng)的道路生成轉(zhuǎn)向語音為空的轉(zhuǎn)向?qū)ο?;否則,不為該起始弧對應(yīng)的道路生成轉(zhuǎn)向?qū)ο?,轉(zhuǎn)步驟914。步驟907,創(chuàng)建一個出弧數(shù)組,在內(nèi)存中的電子地圖中找出當前弧終點關(guān)聯(lián)的道路集,并按出角度排序;逆時針遍歷當前弧終點關(guān)聯(lián)的道路集,起始道路最后遍歷,轉(zhuǎn)步驟 908。步驟908,從當前弧終點關(guān)聯(lián)的道路集中取出一條道路,轉(zhuǎn)步驟909。步驟909,檢查該道路是否是起始道路,是則轉(zhuǎn)步驟910 ;否則轉(zhuǎn)步驟912。步驟910,根據(jù)出弧數(shù)組,為每個出弧創(chuàng)建轉(zhuǎn)向?qū)ο?,轉(zhuǎn)步驟911。步驟911,根據(jù)轉(zhuǎn)向角度為每個轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)道路結(jié)構(gòu)為每個轉(zhuǎn)向生成后綴音,轉(zhuǎn)步驟914。后綴音是由于起始弧對應(yīng)的道路與出弧對應(yīng)的道路結(jié)果不同而需要播報的一種語音。比如,若起始弧對應(yīng)的道路是普通道路,出弧對應(yīng)的道路是高架道路,則該轉(zhuǎn)向相應(yīng)的后綴音是上高架;若起始弧對應(yīng)的道路是高架道路,出弧對應(yīng)的道路是普通道路,則該轉(zhuǎn)向相應(yīng)的后綴音是下高架。若起始弧對應(yīng)的道路是普通道路,出弧對應(yīng)的道路是高速道路, 則該轉(zhuǎn)向相應(yīng)的后綴音是上高速;若起始弧對應(yīng)的道路是高速道路,出弧對應(yīng)的道路是普通道路,則該轉(zhuǎn)向相應(yīng)的后綴音是下高速。步驟912,檢查該道路是否有出弧,是則轉(zhuǎn)步驟913 ;否則轉(zhuǎn)步驟908。步驟913,將該道路的出弧加入到出弧數(shù)組中,并計算其轉(zhuǎn)向角度,轉(zhuǎn)步驟908。步驟914,退出本子過程。創(chuàng)建復(fù)合路口轉(zhuǎn)向?qū)ο蟮淖舆^程的具體流程,如圖21所示。步驟1000,進入本子過程,轉(zhuǎn)步驟1001。步驟1001,創(chuàng)建一個出弧數(shù)組,設(shè)置起始弧對應(yīng)的道路為起始道路,轉(zhuǎn)步驟1002。步驟1002,設(shè)置起始弧終點為當前路口點,起始道路為當前道路,轉(zhuǎn)步驟1003。步驟1003,在內(nèi)存中的電子地圖中找出當前路口點關(guān)聯(lián)的道路集關(guān)聯(lián)的道路集, 并按出角度排序;逆時針遍歷當前路口點關(guān)聯(lián)的道路集,當前道路最后遍歷,轉(zhuǎn)步驟1004。步驟1004,從當前路口點關(guān)聯(lián)的道路集中取出一條道路,轉(zhuǎn)步驟1005。
步驟1005,檢查該道路是否是起始道路,是則轉(zhuǎn)步驟1006 ;否則轉(zhuǎn)步驟1008。步驟1006,根據(jù)出弧數(shù)組,為每個出弧創(chuàng)建轉(zhuǎn)向?qū)ο?,轉(zhuǎn)步驟1007。步驟1007,根據(jù)轉(zhuǎn)向角度為每個轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)道路結(jié)構(gòu)為每個轉(zhuǎn)向生成后綴音,轉(zhuǎn)步驟1012。步驟1008,檢查該道路的屬性是否是路口內(nèi)連接,是則轉(zhuǎn)步驟1009 ;否則轉(zhuǎn)步驟 1010。步驟1009,以該路口內(nèi)道路為當前道路,該路口內(nèi)道路的另一端點為當前路口點, 轉(zhuǎn)步驟1003。步驟1010,檢查該道路是否有出弧,是則轉(zhuǎn)步驟1011 ;否則轉(zhuǎn)步驟1004。步驟1011,將該道路的出弧及其轉(zhuǎn)向角度加入到出弧數(shù)組中,轉(zhuǎn)步驟1004。步驟1012,退出本子過程。創(chuàng)建環(huán)島路口轉(zhuǎn)向?qū)ο蟮淖舆^程的具體流程,如圖22所示。步驟1100,進入本子過程,轉(zhuǎn)步驟1101。步驟1101,創(chuàng)建一個出弧數(shù)組,以起始弧終點為起始路口點,起始弧對應(yīng)的道路為起始道路,轉(zhuǎn)步驟1102。步驟1102,以起始路口點為當前路口點,起始道路為當前道路,轉(zhuǎn)步驟1103。步驟1103,在內(nèi)存中的電子地圖中找出當前路口點關(guān)聯(lián)的道路集合,并按出角度排序;逆時針遍歷當前路口點關(guān)聯(lián)的道路集合,當前道路最后遍歷,轉(zhuǎn)步驟1104。步驟1104,從當前路口點關(guān)聯(lián)的道路集合中順序取出一條道路,轉(zhuǎn)步驟1105。步驟1105,檢查該道路是否是起始道路,是則轉(zhuǎn)步驟1106,否則轉(zhuǎn)步驟1108。步驟1106,根據(jù)出弧數(shù)組,為每個出弧創(chuàng)建轉(zhuǎn)向?qū)ο螅D(zhuǎn)步驟1107。步驟1107,根據(jù)轉(zhuǎn)向角度為每個轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)道路結(jié)構(gòu)為每個轉(zhuǎn)向?qū)ο笊珊缶Y音。轉(zhuǎn)步驟1113。步驟1108,檢查該道路是否是環(huán)島道路,是則轉(zhuǎn)步驟1109,否則轉(zhuǎn)步驟1111。步驟1109,檢查該環(huán)島道路的另一端點是否是起始路口點,是則轉(zhuǎn)步驟1106 ;否則轉(zhuǎn)步驟1110。步驟1110,取該環(huán)島道路為當前道路,該環(huán)島道路另一端點為當前路口點,轉(zhuǎn)步驟 1103。步驟1111,檢查該道路是否有出弧,是則轉(zhuǎn)步驟1112 ;否則轉(zhuǎn)步驟1104。步驟1112,將該道路的出弧及其轉(zhuǎn)向角度加入到出弧數(shù)組中,轉(zhuǎn)步驟1104。步驟1113,退出本子過程。以上所述,僅為本發(fā)明較佳實施例,不以此限定本發(fā)明實施的范圍,依本發(fā)明的技術(shù)方案及說明書內(nèi)容所作的等效變化與修飾,皆應(yīng)屬于本發(fā)明涵蓋的范圍。
權(quán)利要求
1.一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,包含的過程有過程A,確定電子地圖中單線、雙線匯聚點的出角度;過程B,確定電子地圖中環(huán)島道路線的屬性;過程C,確定電子地圖中路口內(nèi)道路線的屬性;過程D,為電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象;過程E,為電子地圖中每一個道路創(chuàng)建相應(yīng)的有向弧對象;過程F,為電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音。
2.根據(jù)權(quán)利要求1所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程A中,遍歷電子地圖中所有的路口點,找出每一個單線、雙線匯聚處的路口點并計算和保存該路口點的出角度。
3.根據(jù)權(quán)利要求2所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程B中,遍歷電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“環(huán)島”而當前為“路口內(nèi)連接”的道路線,將其屬性改為“環(huán)島”。
4.根據(jù)權(quán)利要求3所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程C中,遍歷電子地圖中所有的道路線,找出每一條屬性應(yīng)該為“路口內(nèi)連接”而錯誤設(shè)置的道路線,將其屬性該為“路口內(nèi)連接”。
5.根據(jù)權(quán)利要求4所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程D中,遍歷電子地圖中所有的路口點,若一個路口點是簡單路口點,則生成并保存一個只關(guān)聯(lián)這個路口點的簡單路口對象;若一個路口點是復(fù)合路口點,則尋找與該路口點在同一個路口的其他復(fù)合路口點,生成并保存一個關(guān)聯(lián)到這些復(fù)合路口點的復(fù)合路口對象;若一個路口點是環(huán)島路口點,則尋找與該路口點在同一個環(huán)島路口的其他環(huán)島路口點,生成并保存一個關(guān)聯(lián)到這些環(huán)島路口點的環(huán)島路口對象。
6.根據(jù)權(quán)利要求5所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程E中,遍歷電子地圖中所有的道路,若一條道路的通行方向為雙向禁行,則不對該道路做處理;若一條道路的通行方向為順向,則生成并保存一條與該道路幾何流方向相同的有向??;若一條道路的通行方向為逆向,則生成并保存一條與該道路幾何流方向相反的有向?。蝗粢粭l道路的通行方向為雙向可行,則生成并保存一條與該道路幾何流方向相同的有向弧,和一條與該道路幾何流方向相反的有向弧。
7.根據(jù)權(quán)利要求6所述的一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,其特征在于在所述的過程F中,遍歷電子地圖中所有的有向?。蝗粢粭l有向弧終點的類型是簡單路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,分別為每個所述的出弧生成并保存一個簡單路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個簡單路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的簡單路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是復(fù)合路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個路口的其他復(fù)合路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成一個復(fù)合路口轉(zhuǎn)向?qū)ο?,根?jù)轉(zhuǎn)向角度為每個復(fù)合路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的復(fù)合路口轉(zhuǎn)向?qū)ο笊珊缶Y音;若一條有向弧終點的類型是環(huán)島路口點,則找出所有與該有向弧終點關(guān)聯(lián)的其他出弧,同時找出所有與該有向弧終點在同一個環(huán)島路口的其他環(huán)島路口點關(guān)聯(lián)的出弧,分別為每個所述的出弧生成并保存一個環(huán)島路口轉(zhuǎn)向?qū)ο螅鶕?jù)轉(zhuǎn)向角度為每個環(huán)島路口轉(zhuǎn)向?qū)ο笊赊D(zhuǎn)向語音,根據(jù)每個出弧所在道路的結(jié)構(gòu)為相應(yīng)的環(huán)島路口轉(zhuǎn)向?qū)ο笊珊缶Y音。
全文摘要
本發(fā)明一種生成導(dǎo)航電子地圖數(shù)據(jù)的方法,涉及道路拓撲模型的捕獲及分析,完成道路拓撲數(shù)據(jù)轉(zhuǎn)換的方法。該方法包含的過程有確定電子地圖中單線、雙線匯聚點的出角度;確定電子地圖中環(huán)島道路線的屬性;確定電子地圖中路口內(nèi)道路線的屬性;為電子地圖中每個一路口點創(chuàng)建對應(yīng)的路口對象;為電子地圖中每一個道路創(chuàng)建相應(yīng)的有向弧對象;為電子地圖中每一個弧終點是路口的有向弧創(chuàng)建對應(yīng)的轉(zhuǎn)向?qū)ο蟛⑸蓪?yīng)的轉(zhuǎn)向語音及后綴音。本發(fā)明能克服圖商提供的電子地圖的缺陷,為導(dǎo)航路徑規(guī)劃提供一份有效的導(dǎo)航電子地圖數(shù)據(jù)。
文檔編號G01C21/32GK102162734SQ201110005439
公開日2011年8月24日 申請日期2011年1月11日 優(yōu)先權(quán)日2011年1月11日
發(fā)明者時宜, 曹輝標, 林江毅, 蔡金鎮(zhèn) 申請人:廈門雅迅網(wǎng)絡(luò)股份有限公司