一種二維地圖庫加速的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種二維地圖庫加速的方法。
【背景技術(shù)】
[0002]由于嵌入式系統(tǒng)內(nèi)存小,存儲(chǔ)空間受限制,而通常地圖數(shù)據(jù)比較龐大,地圖的繪制速度較慢,不能滿足需要,因此在繪制時(shí)需要對(duì)其進(jìn)行優(yōu)化。通常在繪制地圖時(shí),由于某些點(diǎn)之間距離太小,會(huì)造成某一區(qū)域內(nèi)數(shù)據(jù)冗余,點(diǎn)過于密集,一方面使繪制的圖形雜亂不清晰,另一方面也會(huì)降低繪圖效率。
[0003]同時(shí)面對(duì)龐大的地圖數(shù)據(jù),又受到嵌入式平臺(tái)處理器速度較慢,內(nèi)存和存儲(chǔ)器資源量小的限制,嵌入式系統(tǒng)在處理大容量矢量地圖時(shí),如果不進(jìn)行優(yōu)化,就不能滿足現(xiàn)實(shí)要求。而且,從文件中直接讀取地圖數(shù)據(jù),讀取速度和繪制速度也非常慢。
【發(fā)明內(nèi)容】
[0004]本發(fā)明為解決【背景技術(shù)】中存在的上述技術(shù)問題,而提供一種二維地圖庫加速的方法,用來加快地圖繪制的速度。
[0005]本發(fā)明的技術(shù)解決方案是:本發(fā)明為一種二維地圖庫加速的方法,其特殊之處在于:該方法包括以下步驟:
[0006]I)讀取地圖數(shù)據(jù);
[0007]2)建立要素分級(jí)的多層網(wǎng)格的索引數(shù)據(jù)模型;
[0008]3)根據(jù)屏幕內(nèi)顯示地圖數(shù)據(jù)的范圍選擇需要的網(wǎng)格;
[0009]4)根據(jù)屏幕顯示范圍對(duì)所選取網(wǎng)格內(nèi)的地圖數(shù)據(jù)進(jìn)行裁剪;
[0010]5)判斷裁剪后地圖數(shù)據(jù)兩點(diǎn)間的距離,舍棄小于定值的點(diǎn);
[0011]6)繪制顯示地圖。
[0012]上述步驟I)是通過調(diào)用二維地圖庫中相關(guān)接口及函數(shù),讀取地圖數(shù)據(jù);
[0013]上述步驟2)的具體步驟如下:
[0014]2.1)將一幅圖的地理范圍劃分為m行η列,得到m*n個(gè)小矩形網(wǎng)格區(qū)域;
[0015]2.2)每個(gè)網(wǎng)格區(qū)域?yàn)橐粋€(gè)索引項(xiàng),并分配一個(gè)動(dòng)態(tài)存儲(chǔ)區(qū);
[0016]2.3)記錄落入該網(wǎng)格的地理要素概要信息。
[0017]上述步驟4)的具體步驟如下:
[0018]4.1)然后將網(wǎng)格中的每個(gè)圖塊信息讀入內(nèi)存,
[0019]4.2)判斷圖塊信息中所含的每個(gè)地理要素外接矩形是否與屏幕區(qū)域相交,如果相交則將相交部分的地理元素進(jìn)行提取,進(jìn)入步驟5);若不相交,則舍棄該圖塊信息;
[0020]上述步驟5)的具體步驟如下:
[0021 ] 5.1)根據(jù)地圖的圖層,預(yù)設(shè)參考值d;
[0022]5.2)計(jì)算相交部分的地理元素每一相鄰兩點(diǎn)之間的距離dx,
[0023]5.3)根據(jù)參考值d和距離dx進(jìn)行判定,舍棄dx小于d時(shí)的后一點(diǎn),直到地理元素中相鄰兩點(diǎn)之間距離均大于等于dx。
[0024]本發(fā)明提供的一種二維地圖庫加速的方法,對(duì)數(shù)據(jù)進(jìn)行過濾處理,通過判定相鄰點(diǎn)間距離,過濾掉多余的點(diǎn),為提高地圖繪制速度提供了一種良好的思路。同時(shí)本發(fā)明通過網(wǎng)格索引將圖塊作為數(shù)據(jù)調(diào)度和顯示的基本單元,能直接過濾掉屏幕外的圖塊及地理要素,極大地減少了地理要素的讀取量,并通過圖塊中所存儲(chǔ)的該要素在地圖文件的地址,直接從地圖文件中查找到要素的具體的位置和屬性信息進(jìn)行顯示處理,從而減少了要素的查找時(shí)間,進(jìn)而提高了地圖的顯示速度。
【具體實(shí)施方式】
[0025]本發(fā)明的具體實(shí)施例的步驟如下:
[0026]I)通過調(diào)用二維地圖庫中相關(guān)接口及函數(shù),讀取地圖數(shù)據(jù);
[0027]2)建立要素分級(jí)的多層網(wǎng)格的索引數(shù)據(jù)模型;其應(yīng)用網(wǎng)格索引的思想,盡量減少地理要素的讀取,盡量只讀取當(dāng)前顯示范圍內(nèi)、當(dāng)前顯示比例下所涉及到得相關(guān)地理要素。網(wǎng)格索引的思想是將一幅圖的地理范圍劃分為m行η列,得到m*n個(gè)小矩形網(wǎng)格區(qū)域,每個(gè)網(wǎng)格區(qū)域?yàn)橐粋€(gè)索引項(xiàng),并分配一個(gè)動(dòng)態(tài)存儲(chǔ)區(qū),記錄落入該網(wǎng)格的地理要素信息:包括標(biāo)識(shí)、在外存文件的存儲(chǔ)地址以及外接矩形等。常將一幅圖分為規(guī)則的m*n個(gè)圖塊。
[0028]3)根據(jù)屏幕內(nèi)顯示地圖數(shù)據(jù)的范圍選擇需要的網(wǎng)格;
[0029]4)地圖顯示時(shí),首先根據(jù)當(dāng)前屏幕要顯示的地理范圍,計(jì)算出覆蓋屏幕區(qū)域的圖塊;然后將每個(gè)圖塊信息讀入內(nèi)存,判斷其所含的每個(gè)地理要素外接矩形是否與屏幕區(qū)域相交,如果相交則將相交部分的地理元素進(jìn)行提取,進(jìn)入步驟5);若不相交,則舍棄該圖塊信息;
[0030]具體實(shí)施例中,判斷相交的方式是判斷所繪制圖形是否在裁剪區(qū)域內(nèi),如果在,就顯示在屏幕上,如果不在,就舍棄。以線段為例,線段POPl兩端點(diǎn)的坐標(biāo)分別為Ρ0(Χ0,Υ0)和Pl (XI,Yl):假設(shè)線段POPl完全在裁剪框內(nèi),則保留POPl;假設(shè)線段POPl明顯在裁剪框外,則完全舍棄;對(duì)于其他情況,則在直線段與裁剪框的交點(diǎn)處把線段分為兩段,其中一部分完全在窗口外,可以棄之,然后對(duì)另一端進(jìn)行重復(fù)上述步驟;
[0031]5)根據(jù)地圖的圖層,預(yù)設(shè)參考值d;計(jì)算相交部分的地理元素每一相鄰兩點(diǎn)之間的距離Px;當(dāng)dx> = d時(shí),保留兩點(diǎn);以后一點(diǎn)為前點(diǎn),以下一點(diǎn)為后點(diǎn),繼續(xù)計(jì)算前點(diǎn)與后點(diǎn)的距離,重新進(jìn)行判斷;當(dāng)dx〈d,保留前點(diǎn),舍棄后一個(gè)點(diǎn);繼續(xù)以下一點(diǎn)為后點(diǎn),計(jì)算前點(diǎn)與后點(diǎn)的距離,重新進(jìn)行判斷,直到地理元素中所有的點(diǎn)之間距離均大于d,
[0032]具體實(shí)施例中,假設(shè)相鄰點(diǎn)的坐標(biāo)依次分別為?1,?2,?3,?4,……Pn(Pn為地理元素中最后一個(gè)點(diǎn)).其中計(jì)算相鄰兩點(diǎn)P1,P2的距離為dl,當(dāng)dl> = d時(shí),保留P1、P2;以后P2為前點(diǎn),以下一點(diǎn)P3為后點(diǎn),繼續(xù)計(jì)算P2與P3的距離為d2,重新與d進(jìn)行判斷;若d2〈d則保留P2,舍棄P3,繼續(xù)計(jì)算P2與P4的距離為d3,重新進(jìn)行判斷,直到地理元素中所有的點(diǎn)之間距離均大于d.
[0033]6)根據(jù)保留的地理元素中的點(diǎn),裁剪優(yōu)化完后繪制地圖,進(jìn)行顯示。
【主權(quán)項(xiàng)】
1.一種二維地圖庫加速的方法,其特征在于:該方法包括以下步驟: 1)讀取地圖數(shù)據(jù); 2)建立要素分級(jí)的多層網(wǎng)格的索引數(shù)據(jù)模型; 3)根據(jù)屏幕內(nèi)顯示地圖數(shù)據(jù)的范圍選擇需要的網(wǎng)格; 4)根據(jù)屏幕顯示范圍對(duì)所選取網(wǎng)格內(nèi)的地圖數(shù)據(jù)進(jìn)行裁剪; 5)判斷裁剪后地圖數(shù)據(jù)兩點(diǎn)間的距離,舍棄小于定值的點(diǎn); 6)繪制顯示地圖。2.根據(jù)權(quán)利要求1所述的二維地圖庫加速的方法,其特征在于:所述步驟I)是通過調(diào)用二維地圖庫中相關(guān)接口及函數(shù),讀取地圖數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的二維地圖庫加速的方法,其特征在于:所述步驟2)的具體步驟如下: 2.1)將一幅圖的地理范圍劃分為m行η列,得到m*n個(gè)小矩形網(wǎng)格區(qū)域; 2.2)每個(gè)網(wǎng)格區(qū)域?yàn)橐粋€(gè)索引項(xiàng),并分配一個(gè)動(dòng)態(tài)存儲(chǔ)區(qū); 2.3)記錄落入該網(wǎng)格的地理要素概要信息。4.根據(jù)權(quán)利要求1所述的二維地圖庫加速的方法,其特征在于:所述步驟4)的具體步驟如下: 4.1)然后將網(wǎng)格中的每個(gè)圖塊信息讀入內(nèi)存, 4.2)判斷圖塊信息中所含的每個(gè)地理要素外接矩形是否與屏幕區(qū)域相交,如果相交則將相交部分的地理元素進(jìn)行提取,進(jìn)入步驟5);若不相交,則舍棄該圖塊信息。5.根據(jù)權(quán)利要求4所述的二維地圖庫加速的方法,其特征在于:所述步驟5)的具體步驟如下: 5.1)根據(jù)地圖的圖層,預(yù)設(shè)參考值d; 5.2)計(jì)算相交部分的地理元素每一相鄰兩點(diǎn)之間的距離dx, 5.3)根據(jù)參考值d和距離dx進(jìn)行判定,舍棄dx小于d時(shí)的后一點(diǎn),直到地理元素中相鄰兩點(diǎn)之間距離均大于等于dx。
【專利摘要】本發(fā)明涉及一種二維地圖庫加速的方法。該方法包括以下步驟:1)讀取地圖數(shù)據(jù);2)建立要素分級(jí)的多層網(wǎng)格的索引數(shù)據(jù)模型;3)根據(jù)屏幕內(nèi)顯示地圖數(shù)據(jù)的范圍選擇需要的網(wǎng)格;4)根據(jù)屏幕顯示范圍對(duì)所選取網(wǎng)格內(nèi)的地圖數(shù)據(jù)進(jìn)行裁剪;5)判斷裁剪后地圖數(shù)據(jù)兩點(diǎn)間的距離,舍棄小于定值的點(diǎn);6)繪制顯示地圖。本發(fā)明可提高地圖的顯示速度。
【IPC分類】G06F17/30
【公開號(hào)】CN105512312
【申請(qǐng)?zhí)枴緾N201510930175
【發(fā)明人】楊峰, 田澤, 張少鋒, 趙彬, 王綺卉, 姜麗云
【申請(qǐng)人】中國(guó)航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所
【公開日】2016年4月20日
【申請(qǐng)日】2015年12月11日