本發(fā)明屬于地圖繪制技術(shù)領(lǐng)域,具體涉及一種多圖層的混合索引方法。
背景技術(shù):
空間索引是指依據(jù)空間對(duì)象的位置和形狀或空間對(duì)象之間的某種空間關(guān)系按一定的順序排列的一種數(shù)據(jù)結(jié)構(gòu),其中包含空間對(duì)象的概要信息,如對(duì)象的標(biāo)識(shí)、外接矩形及指向空間對(duì)象實(shí)體的指針。
空間數(shù)據(jù)查詢即空間索引,是對(duì)存儲(chǔ)在介質(zhì)上的數(shù)據(jù)位置信息的描述,是用來提高系統(tǒng)對(duì)數(shù)據(jù)獲取的效率,也稱為空間訪問方法(Spatial Access Method SAM)。是指依據(jù)空間對(duì)象的位置和形狀或空間對(duì)象之間的某種空間關(guān)系按一定的順序排列的一種數(shù)據(jù)結(jié)構(gòu)其中包含空間對(duì)象的概要信息如對(duì)象的標(biāo)識(shí)外接矩形及指向空間對(duì)象實(shí)體的指針。
作為一種輔助性的空間數(shù)據(jù)結(jié)構(gòu)空間索引介于空間操作算法和空間對(duì)象之間它通過篩選作用大量與特定空間操作無關(guān)的空間對(duì)象被排除從而提高空間操作的速度和效率。
當(dāng)前數(shù)據(jù)搜索的一個(gè)關(guān)鍵問題是速度。提高速度的核心技術(shù)是空間索引??臻g索引是由空間位置到空間對(duì)象的映射關(guān)系。當(dāng)前的一些大型數(shù)據(jù)庫(kù)都有空間索引能力,像Oracle,DB2??臻g索引技術(shù)并不單是為了提高顯示速度,顯示速度僅僅是它所要解決的一個(gè)問題??臻g索引是為空間搜索提供一種合適的數(shù)據(jù)結(jié)構(gòu),以提高搜索速度??臻g索引技術(shù)的核心是:根據(jù)搜索條件,比如一個(gè)矩形,迅速找到與該矩形相交的所有空間對(duì)象集合。當(dāng)數(shù)據(jù)量巨大,矩形框相對(duì)于全圖很小時(shí),這個(gè)集合相對(duì)于全圖數(shù)據(jù)集大為縮小,在這個(gè)縮小的集合上再處理各種復(fù)雜的搜索,效率就會(huì)大大提高。所謂空間索引,就是指依據(jù)空間實(shí)體的位置和形狀或空間實(shí)體之間的某種空間關(guān)系,按一定順序排列的一種數(shù)據(jù)結(jié)構(gòu),其中包含空間實(shí)體的概要信息如對(duì)象的標(biāo)識(shí)、外接矩形及指向空間實(shí)體數(shù)據(jù)的指針。簡(jiǎn)單的說,就是將空間對(duì)象按某種空間關(guān)系進(jìn)行劃分,以后對(duì)空間對(duì)象的存取都基于劃分塊進(jìn)行。
現(xiàn)有的空間索引基本都是針對(duì)的是單圖層,但是對(duì)于多圖層的空間索引基本沒有涉及。
隨著這幾年地圖技術(shù)的推廣,越來越多的人希望把更多的信息加載到地圖上去。這就帶來一個(gè)問題,地圖加載的信息越來越多,但是實(shí)時(shí)繪制速度卻越來越慢。瀏覽速度的變慢主要來源于兩個(gè)問題:
單個(gè)圖層的數(shù)據(jù)量越來越大,導(dǎo)致一次性的繪制信息,特別是在全圖的時(shí)候單個(gè)圖層繪制的內(nèi)容變多;
圖層越來越多,導(dǎo)致整個(gè)地圖的繪制的信息量變大。
此發(fā)明主要針對(duì)第二個(gè)問題進(jìn)行展開。
以往的空間索引,基本都是針對(duì)單個(gè)圖層的索引技術(shù),其立足點(diǎn)主要是提高查詢、分析的效率。但是真正在實(shí)際應(yīng)用中,更多普通的用戶更關(guān)心的是如何直觀有效的看到地圖,瀏覽到地圖上有用的信息。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述背景技術(shù)的缺陷,本發(fā)明提供一種多圖層的混合索引方法,提出了多圖層的混合索引技術(shù),針對(duì)在同一地圖如果圖層的分布固定的情況下,對(duì)此地圖構(gòu)建多圖層的索引,提高地圖的整體繪制效率。
為了解決上述技術(shù)問題本發(fā)明的所采用的技術(shù)方案為:
一種多圖層的混合索引方法,包括:
步驟1,選擇索引方式;
步驟2,獲取當(dāng)前地圖信息;
步驟3,構(gòu)建索引規(guī)則,構(gòu)建網(wǎng)格索引的網(wǎng)格大小及分布;
步驟4,對(duì)每個(gè)圖層按照網(wǎng)格大小及分布構(gòu)建索引:
步驟5,按照整個(gè)地圖的圖層順序,構(gòu)建整個(gè)地圖的索引:
步驟6,根據(jù)全局索引的結(jié)果設(shè)置繪制效果。
較佳地,索引方式包括網(wǎng)格索引,網(wǎng)格索引包括整體索引方式。
較佳地,步驟2獲取當(dāng)前地圖信息包括:
步驟201,獲取地圖的所有的圖層;
步驟202,獲取地圖的圖層,對(duì)圖層從上至下進(jìn)行編號(hào),最上方的圖層編號(hào)為0;
步驟203,獲取各個(gè)圖層的數(shù)據(jù)總量。
較佳地,步驟3具體包括:
步驟301,設(shè)置網(wǎng)格的大??;
步驟302,依據(jù)地圖范圍以及網(wǎng)格的分布進(jìn)行換算,判斷每個(gè)網(wǎng)格占據(jù)的實(shí)際的坐標(biāo)范圍,并且以此為依據(jù)構(gòu)建網(wǎng)格的編號(hào)與實(shí)際的地理坐標(biāo)的映射關(guān)系;
步驟303,構(gòu)建存儲(chǔ)表存儲(chǔ)網(wǎng)格的編號(hào)與所處的地理范圍的坐標(biāo)值。
較佳地,步驟301設(shè)置網(wǎng)格的大小時(shí),一個(gè)市的數(shù)據(jù)設(shè)置為1024*1024的一個(gè)網(wǎng)格。
較佳地,步驟4包括:
步驟401,遍歷每個(gè)圖層,對(duì)每個(gè)圖層構(gòu)建一個(gè)網(wǎng)格索引;
步驟402,遍歷每個(gè)圖層的要素,將其要素與網(wǎng)格的關(guān)聯(lián)關(guān)系存儲(chǔ)在圖層的網(wǎng)格索引表。
較佳地,網(wǎng)格索引表中X方向網(wǎng)格編碼對(duì)應(yīng)橫坐標(biāo)的對(duì)應(yīng)的網(wǎng)格編號(hào),Y方向的網(wǎng)格編碼對(duì)應(yīng)縱坐標(biāo)對(duì)應(yīng)的玩?zhèn)€編號(hào),要素的標(biāo)識(shí)包括要素在所對(duì)應(yīng)圖層中的唯一標(biāo)識(shí),要素的外接矩形采用WKT的方式進(jìn)行存儲(chǔ),要素是否完全覆蓋網(wǎng)格。
較佳地,步驟5包括:
步驟501,構(gòu)建一個(gè)全局的索引,存儲(chǔ)圖層名以及圖層網(wǎng)格索引的表名;
步驟502,按照?qǐng)D層順序遍歷所有的圖層索引,如果存在以下預(yù)設(shè)關(guān)系的就進(jìn)行標(biāo)識(shí)。
較佳地,預(yù)設(shè)關(guān)系包括:
第一,在同一個(gè)網(wǎng)格中,如果圖層編號(hào)小的要素的外接矩形大于或等于圖層編號(hào)大的外界矩形,則判斷圖層編號(hào)小的要素包含或覆蓋圖層編號(hào)大的要素;
第二,有圖層的某一個(gè)要素其完全覆蓋某一個(gè)網(wǎng)格,判斷其圖層編號(hào)大于此圖層的所有圖層中的此網(wǎng)格中的要素,其網(wǎng)格的要素都小于此網(wǎng)格。
較佳地,步驟6包括:
步驟601,全圖索引的信息結(jié)果設(shè)置每個(gè)圖層的顯示內(nèi)容,對(duì)于上一步索引中存在覆蓋情況的要素不進(jìn)行繪制;
步驟602,在繪制的時(shí)候進(jìn)行標(biāo)識(shí),如果存在圖層設(shè)置透明度的情況,則設(shè)置透明的圖層不納入全圖的索引范圍內(nèi);
本發(fā)明的有益效果在于:本發(fā)明每層單獨(dú)建立網(wǎng)格索引,針對(duì)每層的網(wǎng)格索引,可以先通過每層的計(jì)算從而減少整體的全圖索引的計(jì)算量;本發(fā)明的全圖索引以每個(gè)圖層的網(wǎng)格索引為依據(jù),以此為基礎(chǔ),根據(jù)圖層的級(jí)別以及顯示順序從而降低整體的繪制量;從而提高整個(gè)地圖的瀏覽速度。本發(fā)明提出了多圖層的混合索引技術(shù),針對(duì)在同一地圖如果圖層的分布固定的情況下,對(duì)此地圖構(gòu)建多圖層的索引,提高地圖的整體繪制效率。
附圖說明
圖1為本發(fā)明實(shí)施例獲取網(wǎng)格編號(hào)的方法流程圖;
圖2為本發(fā)明實(shí)施例構(gòu)建單圖層網(wǎng)格索引的方法流程圖;
圖3為本發(fā)明實(shí)施例全圖層索引計(jì)算方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說明。
如圖1至圖3所示,一種多圖層的混合索引技術(shù)從而提高地圖的整體繪制效率,包括以下步驟:
步驟1,選擇索引的方式,現(xiàn)有的空間索引方式非常多,這里推薦采用網(wǎng)格索引的方式為整體的索引方式;
步驟2,獲取當(dāng)前地圖的信息
步驟201,獲取地圖的所有的圖層;
步驟202,獲取地圖的圖層并且對(duì)圖層進(jìn)行編號(hào),從上往下進(jìn)行編號(hào),編號(hào)從0開始,越在上的圖層其編號(hào)越小,越在下的圖層其編號(hào)越大;
步驟203,獲取每個(gè)圖層的數(shù)據(jù)總量;
步驟3,構(gòu)建索引的規(guī)則,根據(jù)實(shí)際的地圖情況構(gòu)建網(wǎng)格索引的網(wǎng)格的大小,以及分布情況;
步驟301,根據(jù)數(shù)據(jù)的覆蓋范圍設(shè)置網(wǎng)格的大小,一般一個(gè)市的數(shù)據(jù)設(shè)置為1024*1024的一個(gè)網(wǎng)格;
步驟302,根據(jù)地圖的范圍以及網(wǎng)格的分布進(jìn)行換算,判斷每個(gè)網(wǎng)格占據(jù)的實(shí)際的坐標(biāo)范圍,并且以此為依據(jù)構(gòu)建網(wǎng)格的編號(hào)與實(shí)際的地理坐標(biāo)的映射關(guān)系;
步驟303,構(gòu)建存儲(chǔ)表存儲(chǔ)網(wǎng)格的編號(hào)與所處的地理范圍的坐標(biāo)值;
步驟4,對(duì)每個(gè)圖層按照之前制定的網(wǎng)格規(guī)則構(gòu)建索引:
步驟401,遍歷每個(gè)圖層,針對(duì)每個(gè)圖層都構(gòu)建一個(gè)網(wǎng)格索引;
步驟402,遍歷每個(gè)圖層的要素,將其要素與網(wǎng)格的關(guān)聯(lián)關(guān)系存儲(chǔ)在圖層的網(wǎng)格索引表里:
步驟5,按照整個(gè)地圖的圖層順序,構(gòu)建整個(gè)地圖的索引:
步驟501,構(gòu)建一個(gè)全局的索引,存儲(chǔ)圖層名以及圖層網(wǎng)格索引的表名;
步驟502,按照?qǐng)D層順序遍歷所有的圖層索引,如果存在以下預(yù)設(shè)關(guān)系的情況就進(jìn)行標(biāo)識(shí):
第一,在同一個(gè)網(wǎng)格中,如果圖層編號(hào)小的要素的外接矩形大于或等于圖層編號(hào)大的外界矩形,則判斷圖層編號(hào)小的要素是否包含或覆蓋圖層編號(hào)大的要素,如果成立則對(duì)這種情況進(jìn)行記錄;
第二,有圖層的某一個(gè)要素其完全覆蓋某一個(gè)網(wǎng)格,判斷其圖層編號(hào)大于此圖層的所有圖層中的此網(wǎng)格中的要素,如果其網(wǎng)格的要素都小于此網(wǎng)格的則進(jìn)行記錄;
步驟6,根據(jù)全局索引的結(jié)果設(shè)置繪制效果:
步驟601,全圖索引的信息結(jié)果設(shè)置每個(gè)圖層的顯示內(nèi)容,對(duì)于上一步索引中存在覆蓋情況的要素不進(jìn)行繪制;
步驟602,在繪制的時(shí)候進(jìn)行標(biāo)識(shí),如果存在圖層設(shè)置透明度的情況,則設(shè)置透明的圖層不納入全圖的索引范圍內(nèi)。
應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。