【正文】
_koord_distance( int coord_system, long x1, long y1, long x2, long y2 )2)winkel_zwischen_drei_punkten(constgdblib::koord_camp。讀入第一個點并存儲,遍歷各個形狀點,判斷當(dāng)前點與上一點之間的距離,如果小于限制距離,則此點不再做判斷,繼續(xù)找下一個點。若果滿足條件,則返回當(dāng)前點的上一個點,判斷當(dāng)前points里的點之間的距離,若小于最小距離,則清空points,存入當(dāng)前點。以上兩個流程圖主要功能是將直線劃分成MH并將其中的點存入相對應(yīng)的名字中。 //add first point to point arrayint sizecoor = ()for (int i = 1。 } if(point size==255||roadangleminangle) { koord_c cornerpoint = point[pointSize1]。 } (InformationForLH_c())。 }} }}上述函數(shù)主要調(diào)用了兩個函數(shù),一個是:gdbl_koord_distance( int coord_system, long x1, long y1, long x2, long y2 ),另外一個是:winkel_zwischen_drei_punkten(constgdblib::koord_camp。下面將簡述一下部分代碼。dx = (x2 x1) * xratio。}關(guān)于winkel_zwischen_drei_punkten( )函數(shù):double winkel_zwichen_drei_punkten( ){if((====)amp。}if(====){ return PI。double cosw=scalar/(dA*dB)。+dy178。+(y3y1)178。 地圖數(shù)據(jù)描畫工具地圖數(shù)據(jù)描畫工具M(jìn)apdatashow可讀入地圖數(shù)據(jù),對地圖數(shù)據(jù)進(jìn)行分析并描畫,使數(shù)據(jù)更加直觀地顯示出來,根據(jù)展現(xiàn)出來的畫面可以檢查數(shù)據(jù)是否有錯誤。 OnPaint()函數(shù)流程圖及功能介紹 OnPaint函數(shù)流程圖 DrawPoint流程圖 DrawMHPoint流程圖()函數(shù)。具體步驟如下:1. 遍歷block中的每個patch,將每個patch中的每個元素依次描畫出來。5. 當(dāng)前patch中所有的文字標(biāo)注描畫完成后,查找下一個patch,直至所有patch均描畫完成結(jié)束。2. 當(dāng)前點是否在地圖顯示軟件顯示的區(qū)域內(nèi),如果在,則繼續(xù)描畫;如果不在則函數(shù)返回不描畫該點。6. 如果點擊了元素對話框中的文字標(biāo)注信息,則在地圖上將該文字標(biāo)注用邊框重點描畫出來。3. 以文字標(biāo)注的坐標(biāo)為中心點,計算開始描畫名字的位置。7. 如果點擊了以文字標(biāo)注為中心的一定區(qū)域內(nèi),則在元素對話框中顯示元素和文字標(biāo)注的信息。重點了解地圖數(shù)據(jù)的幾種重要的格式及其表現(xiàn)的方式,沿路文字標(biāo)記的實現(xiàn)過程以及如何更好地使用地圖數(shù)據(jù)描畫軟件Mapdatashow顯示出數(shù)據(jù)的過程。 對路進(jìn)行切割,要考慮到路包含的形狀點數(shù)目,兩個形狀點之間的距離,以及轉(zhuǎn)彎的夾角問題等。在Mapdatashow上如何對數(shù)據(jù)進(jìn)行提取和描畫。在空間上,導(dǎo)航儀的內(nèi)存空間很有限,計算大量的數(shù)據(jù)很容易出現(xiàn)內(nèi)存空間不足的現(xiàn)象。參考文獻(xiàn)[1] :武 漢大學(xué),2005:32120[2] :交通與運 輸,2006:2656[3] :公路交通科技,2009:1562[4] (2):3440[5] (2):2228[6] C++:清華大學(xué)出版社,2007:2569[7] (2):103105[8] ::1862[9] ,2009(2):5558[10] :太原華北工學(xué)院,2007:1249[11] ,2005(1):7179[12] ,2005(2):106109[13] ,2004(4):1822[14] ++:希望電子出版社, 2008:2369[15] William Ford, William Topp, 陳君 ++語言描述——應(yīng)用標(biāo)準(zhǔn)模板庫(STL).::2549[16] 李寧,2007(32):157 159 [17] 何晶,齊清文,何宗宜.移動數(shù)字地圖的技術(shù)環(huán)境和核心問題研究,測繪科學(xué),2005(6): 3032 [18] Andrew Koenig,Barbara E,靳志偉 譯. Moo.Accelerated C++. 北京:機(jī)械工業(yè)出版社,2007:1476[19] Herb Sutter,於春景譯.More Exceptional. 第二版. 湖北:華中科技大學(xué)出版社,2009:1682[20] [EB/OL].,[21][EB/OL]. , [22][EB/OL]. ,[23] Harvey and Information Systems for TransporationPrinciples and University Press. 2007(2):102156[24] John Consequences of the Global Positioning Engineering 2009(2):217228[25] Stanley , Barbara . C++ Primer. 北京:人民郵電出版社, 2006(11):566601[26] Stanley Lippman.Inside the C++ Object Model. 北京:人民郵電出版社,2006:280320致 謝大學(xué)四年的學(xué)習(xí)生活轉(zhuǎn)瞬即逝,收獲是頗多的。感謝我周圍的所有同學(xué)在我的大學(xué)期間給予我的幫助。正是李老師的無私幫助與熱忱鼓勵,我的畢業(yè)論文才能夠得以順利完成,謝謝李老師。所以,為地圖數(shù)據(jù)添加文字標(biāo)注,不論從時間還是空間上,都為導(dǎo)航儀節(jié)省了大量開銷,減輕了導(dǎo)航儀的負(fù)擔(dān),從而使導(dǎo)航儀能夠快速穩(wěn)定的運行,使用戶了解到自己所處的位置,選擇最短路徑快速地到達(dá)目的地。在時間上,如果沒有文字標(biāo)注,導(dǎo)航儀需自己計算顯示名稱的位置,由于地圖數(shù)據(jù)量龐大,計算繁瑣,所以會耗費大量時間。在Mapdatashow軟件上顯示需要判斷Block中Patch的元素,并描畫Patch中的元素。本設(shè)計主要應(yīng)用了C++語言的類和STL模板庫中的vector容器作為主要存儲方式,通過對原始數(shù)據(jù)的預(yù)計算,實現(xiàn)了在轉(zhuǎn)換地圖數(shù)據(jù)的過程中,為線元素添加水平文字標(biāo)注。第5章 測 試以下四個圖分別是在Mapdatashow軟件上將地圖數(shù)據(jù)描畫出來的圖片,目的是用來檢出地圖數(shù)據(jù)是否有錯誤,檢驗功能是否實現(xiàn)。5. 將當(dāng)前點的實際坐標(biāo)轉(zhuǎn)換成屏幕上的坐標(biāo)。具體步驟如下:1. 文字標(biāo)注的名字是否為空,如果為空,函數(shù)返回;否則進(jìn)行下一步。4. 如果當(dāng)前文字標(biāo)注存在名字,則在該文字標(biāo)注坐標(biāo)的右側(cè)描畫名字,并描畫該點;如果不存在則函數(shù)返回。此函數(shù)用來描畫文字標(biāo)注點,并在文字標(biāo)注點的右側(cè)描畫名字。3. 如果該文字標(biāo)注的比例尺大于等于地圖顯示軟件當(dāng)前顯示的比例尺,則根據(jù)文字標(biāo)注的類型進(jìn)行描畫;否則查找下一個文字標(biāo)注。并可根據(jù)其MH數(shù)據(jù)對相應(yīng)的元素命名,使其相應(yīng)的名字顯示在相應(yīng)的位置上。通過控制,可對地圖進(jìn)行放大和縮小,可以查看到不同比例尺下的地圖數(shù)據(jù)顯示情況。 地圖數(shù)據(jù)的描畫以上gdblib::linienzug_c::set_CurvedMarkHints_LF()函數(shù)以及gdblib::linienzug_c::calc_MH()函數(shù)是將符合條件的點存儲起來并添加文字