本發(fā)明涉及地理空間數(shù)據(jù)應(yīng)用,尤其涉及一種基于信息特征碼的地理空間矢量數(shù)據(jù)增量更新方法。
背景技術(shù):
1、目前,地理空間矢量數(shù)據(jù)增量更新入庫(kù)主要使用兩種方法,一種是基于圖形特征匹配的增量更新,先基于幾何特征進(jìn)行要素匹配,然后逐個(gè)比對(duì)匹配要素的坐標(biāo)點(diǎn)和屬性信息;另一種是基于要素唯一標(biāo)識(shí)碼(一般是生成的gu?id碼,與要素的特征無(wú)關(guān)聯(lián))的增量更新,該方法通過(guò)查找要素唯一標(biāo)識(shí)碼匹配要素,然后逐個(gè)比對(duì)要素的坐標(biāo)點(diǎn)和屬性信息,雖然避免了幾何特征匹配,但仍然要對(duì)要素特征進(jìn)行逐一比對(duì),且由于要素在編輯中涉及打斷、分割、合并等操作,其唯一標(biāo)識(shí)碼與對(duì)象之間的關(guān)系難以繼承和維護(hù),會(huì)產(chǎn)生大量的假新增和假刪除記錄。上述常規(guī)方法隨著數(shù)據(jù)范圍和數(shù)據(jù)復(fù)雜度的增加,查找和比對(duì)運(yùn)算次數(shù)急劇增長(zhǎng),導(dǎo)致耗時(shí)也將大幅度增加,在大面積、復(fù)雜要素的更新場(chǎng)景下,無(wú)法滿足高效增量更新的需求,本發(fā)明提出的技術(shù)方法意在解決大面積、復(fù)雜要素場(chǎng)景下增量更新效率低下的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的缺點(diǎn),而提出的一種基于信息特征碼的地理空間矢量數(shù)據(jù)增量更新方法。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明采用了如下技術(shù)方案:
3、設(shè)計(jì)一種基于信息特征碼的地理空間矢量數(shù)據(jù)增量更新方法,具體步驟如下:
4、s1、建立空間數(shù)據(jù)庫(kù),用于存儲(chǔ)地理空間矢量要素;
5、s2、地理空間矢量要素設(shè)置新增時(shí)間和刪除時(shí)間標(biāo)識(shí),建立增量存儲(chǔ)機(jī)制,刪除時(shí)間用于標(biāo)識(shí)要素的刪除狀態(tài)和刪除時(shí)間,新增時(shí)間則標(biāo)識(shí)要素產(chǎn)生的時(shí)間;
6、s3、建立地理空間矢量要素增刪改事件與空間數(shù)據(jù)庫(kù)記錄增刪改的對(duì)應(yīng)關(guān)系,要素新增事件觸發(fā)在空間數(shù)據(jù)庫(kù)表插入新紀(jì)錄,并添加新增時(shí)間信息;要素刪除事件觸發(fā)在數(shù)據(jù)庫(kù)表對(duì)應(yīng)記錄中添加刪除時(shí)間;要素修改事件觸發(fā)在數(shù)據(jù)庫(kù)表按修改后的現(xiàn)狀信息插入新記錄,添加新增時(shí)間信息,同時(shí)給要素原始記錄添加刪除時(shí)間;
7、s4、設(shè)置地理空間矢量要素信息特征碼存儲(chǔ)字段feature與feature_salt,用于存儲(chǔ)生成地理空間矢量要素信息特征碼和對(duì)要素特征加鹽后生成的信息特征碼,feature_salt用于數(shù)據(jù)校驗(yàn),防止信息特征碼的碰撞;
8、s5、建立信息特征碼生成器;
9、s6、建立信息特征碼更新觸發(fā)器,當(dāng)矢量要素本身發(fā)生增刪改事件時(shí),觸發(fā)對(duì)矢量要素feature和feature_salt的更新,由信息特征碼更新觸發(fā)器調(diào)用信息特征碼生成器,以維護(hù)信息特征碼與要素特征的匹配性;
10、s7、獲取數(shù)據(jù)源進(jìn)行增量更新入庫(kù)。
11、優(yōu)選的,所述生成器有如下特性:根據(jù)給定要素,組合要素特征字符串m0:地物類型(geotype)|地物編碼(code)|坐標(biāo)信息串|屬性信息串,屬性信息串不包含信息特征碼字段,然后使用散列函數(shù)nn=h1(mn)生成特征碼n0,存入要素的feature字段中,在要素特征字符串m0前添加要素的圖層名,組合成為新的要素特征字符串m1:layername|m0,使用上述散列函數(shù)生成特征碼n1,存入要素的feature_salt字段中。
12、優(yōu)選的,坐標(biāo)信息串具體如下:
13、x1|y1|z1|pointtype1|x2|y2|z2|pointtype2|.......xn|yn|zn|pointtypen。
14、優(yōu)選的,屬性信息串具體如下:
15、field1|value1|field2|value2|......fieldn|valuen。
16、優(yōu)選的,在s7中執(zhí)行如下流程:
17、1、獲取增量更新區(qū)域范圍p={p1,p2......pn};
18、2、獲取增量更新數(shù)據(jù)源集合,使用p與數(shù)據(jù)源集合進(jìn)行相交運(yùn)算,獲取完全和局部在p內(nèi)的矢量要素,構(gòu)造集合updatelist;
19、3、遍歷updatelist,獲取集合內(nèi)要素的信息特征碼集合updatefeaturelist與updatefeaturelist_salt,三個(gè)集合索引號(hào)一一對(duì)應(yīng);
20、4、使用p作為空間參數(shù)訪問(wèn)目標(biāo)空間數(shù)據(jù)庫(kù),獲取空間數(shù)據(jù)庫(kù)要素完全和局部在p內(nèi)的要素,緩存數(shù)據(jù)并構(gòu)造集合databaselist;
21、5、遍歷databaselist,獲取集合內(nèi)要素的信息特征碼集合databasefeaturelist與databasefeaturelist_salt,三個(gè)集合索引號(hào)一一對(duì)應(yīng);
22、6、構(gòu)造地理空間矢量要素的新增和刪除集合deletelist、newlyaddedlist;
23、7、構(gòu)造哈希表ht1,通過(guò)散列函數(shù)h2(key)將databasefeaturelist中的記錄逐一添加到哈希表ht1,添加過(guò)程中,若在相應(yīng)內(nèi)存位置已有數(shù)據(jù),則不添加,同時(shí)表明有重復(fù)值,需要去除重復(fù)值,得到databasefeaturelist對(duì)應(yīng)的索引號(hào)n,將databaselist中索引號(hào)n對(duì)應(yīng)的要素添加到deletelist;
24、8、再通過(guò)散列函數(shù)h2(key)將updatefeaturelist中記錄逐一添加到哈希表ht1,若在相應(yīng)內(nèi)存位置數(shù)據(jù)為空,則表明databasefeaturelist不存在相同的記錄值,代表該要素為新增,得到updatefeaturelist的索引號(hào),將updatelist對(duì)應(yīng)索引號(hào)的要素添加到newlyaddedlist,若在相應(yīng)內(nèi)存位置已有數(shù)據(jù),則表明databasefeaturelist中有相同的記錄值,代表要素未變化,不做任何操作;
25、9、構(gòu)造哈希表ht2,通過(guò)散列函數(shù)h2(key)將updatefeaturelist中的記錄逐一添加到哈希表ht2,添加過(guò)程中,若在相應(yīng)內(nèi)存位置已有數(shù)據(jù),則不添加;
26、10、再通過(guò)散列函數(shù)h2(key)將databasefeaturelist中記錄逐一添加到哈希表ht2,若在相應(yīng)內(nèi)存位置數(shù)據(jù)為空,則表明updatefeaturelist不存在相同的記錄值,代表該要素為刪除,得到databasefeaturelist的索引號(hào),將databaselist對(duì)應(yīng)索引號(hào)的要素添加到deletelist,若在相應(yīng)內(nèi)存位置已有數(shù)據(jù),則表明updatefeaturelist中有相同的記錄值,代表要素未變化,則不添加;
27、11、構(gòu)造地理空間矢量要素的新增和刪除集合deletelist_salt、newlyaddedlist_salt,分別代替deletelist和newlyaddedlist,同時(shí)使用databasefeaturelist_salt代替databasefeaturelist,使用updatefeaturelist_salt代替updatefeaturelist,構(gòu)造哈希表ht3和ht4,通過(guò)散列函數(shù)h2(key)重復(fù)執(zhí)行上述步驟7~10;
28、12、將集合deletelist_salt與集合deletelist取交集,結(jié)果存儲(chǔ)到deletelist,將newlyaddedlist_salt與集合newlyaddedlist取并集,結(jié)果存儲(chǔ)到newlyaddedlist;
29、13、將newlyaddedlist作為要素新增集合,deletelist作為要素刪除集合,按照2~3約定的規(guī)則,更新建立的空間數(shù)據(jù)庫(kù)。
30、本發(fā)明提出的一種基于信息特征碼的地理空間矢量數(shù)據(jù)增量更新方法,有益效果在于:在地理空間矢量數(shù)據(jù)增量更新領(lǐng)域,增量比對(duì)一般在二維空間中進(jìn)行,需要經(jīng)過(guò)復(fù)雜的空間搜索、匹配,然后逐一遍歷其空間或?qū)傩蕴卣?,算法的時(shí)間和空間復(fù)雜度高,運(yùn)行效率低,隨著地理空間矢量要素?cái)?shù)量及要素本身復(fù)雜度的提高,其效率會(huì)急劇下降。本發(fā)明將二維空間的復(fù)雜計(jì)算轉(zhuǎn)換到一維空間的簡(jiǎn)單計(jì)算,降低了程序開發(fā)的復(fù)雜度,提高了執(zhí)行效率;在一維空間中比對(duì)時(shí),使用哈希表存儲(chǔ)要素信息特征碼,要素存儲(chǔ)位置由要素特征碼計(jì)算獲得,要素查找匹配效率不會(huì)隨著數(shù)據(jù)量的增大而降低,同時(shí),信息特征碼使用固定的長(zhǎng)度描述了要素的空間和屬性特征,用于判斷要素的變化,其比對(duì)效率與地理空間矢量要素的復(fù)雜性無(wú)關(guān)。生成要素信息特征碼需要遍歷要素特征,本發(fā)明將此環(huán)節(jié)前置到了要素變更觸發(fā)器中,將效率損耗均攤到了每個(gè)要素增刪改環(huán)節(jié)。因此,本發(fā)明提高了增量更新的效率,在基礎(chǔ)測(cè)繪、城市勘測(cè)大面積更新場(chǎng)景中,具有較好的支撐作用。