專利名稱:一種柵格數(shù)據(jù)的存儲(chǔ)、讀取方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉 及柵格數(shù)據(jù)處理的技術(shù)領(lǐng)域,特別是涉及到ー種柵格數(shù)據(jù)的存儲(chǔ)、讀取方法及裝置。
背景技術(shù):
柵格數(shù)據(jù)是以ニ維矩陣的形式來表示空間地物或現(xiàn)象分布的數(shù)據(jù)組織方式,每個(gè)矩陣單位稱為ー個(gè)柵格單元,柵格的每個(gè)數(shù)據(jù)表示地物或現(xiàn)象的屬性數(shù)據(jù)。隨著地理信息系統(tǒng)(GIS、Geographic Information System)應(yīng)用于各個(gè)行業(yè),在實(shí)際應(yīng)用中,大量使用海量柵格數(shù)據(jù),帶來應(yīng)用系統(tǒng)的存儲(chǔ)空間、性能要求與網(wǎng)絡(luò)傳輸以及運(yùn)算量等技術(shù)難點(diǎn)。尤其在ー些GIS軟件中,海量柵格數(shù)據(jù)的存儲(chǔ)管理以及網(wǎng)絡(luò)傳輸速率往往是性能瓶頸。假設(shè)柵格數(shù)據(jù)是由K行L列個(gè)柵格單元組成,每個(gè)柵格單元存儲(chǔ)的是O到9的整數(shù)值。若采用普通方法,每個(gè)柵格単元用I字節(jié)進(jìn)行存儲(chǔ),則需要K*L個(gè)字節(jié),所需的存儲(chǔ)空間非常大,這對(duì)系統(tǒng)的存儲(chǔ)、性能,以及網(wǎng)絡(luò)的傳輸效率都要求很高。因此,本領(lǐng)域技術(shù)人員迫切需要解決的ー個(gè)技術(shù)問題在于,如何節(jié)省柵格數(shù)據(jù)的存儲(chǔ)空間,提高柵格數(shù)據(jù)的處理效率。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┅`種柵格數(shù)據(jù)的存儲(chǔ)、讀取方法及裝置,用以節(jié)省柵格數(shù)據(jù)的存儲(chǔ)空間,提高柵格數(shù)據(jù)的處理效率。為了解決上述問題,本申請(qǐng)公開了ー種柵格數(shù)據(jù)的存儲(chǔ)方法,包括步驟S101,獲取原始柵格數(shù)據(jù),所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù);步驟S102,在所述K*L個(gè)柵格單元中依次從第一個(gè)未提取的原始柵格單元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值;步驟S103,采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格単元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;步驟S104,若提取到的連續(xù)原始柵格單元不足9個(gè),則將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)的原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格単元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;
步驟S105,判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則執(zhí)行步驟S106 ;若否,則返回步驟S102 ;步驟S106,將所述目標(biāo)柵格単元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、步驟S102中所述的預(yù)設(shè)提取方式及步驟S104中所述的9-N個(gè)特征值。優(yōu)選地,所述預(yù)設(shè)提取方式包括按每行或每列提取;所述按每行提取包括從左到右或從右到左提?。蝗裘啃凶詈筇崛〉降倪B續(xù)原始柵格単元不足9個(gè),則執(zhí)行步驟S104 ;所述按每列提取包括從上到下或從下到上提??;每列最后提取到的連續(xù)原始柵格単元不足9個(gè),則執(zhí)行步驟S104。
優(yōu)選地,所述預(yù)設(shè)提取方式包括按整個(gè)柵格數(shù)據(jù)提??;所述按整個(gè)柵格數(shù)據(jù)提取包括把所有的行連接起來進(jìn)行順次提??;整個(gè)柵格數(shù)據(jù)的最后幾個(gè)連續(xù)柵格單元不足9個(gè),則執(zhí)行步驟S104。優(yōu)選地,所述步驟S103中根據(jù)9個(gè)連續(xù)原始柵格單元的值生成ー個(gè)9位整數(shù)包括將所述9個(gè)連續(xù)原始柵格單元的值,按順序從高位到低位排列得到ー個(gè)9位整數(shù);所述按順序從高位到低位排列,包括提取到的第一個(gè)柵格単元的值放在最高位,最后ー個(gè)柵格単元的值放在最低位。優(yōu)選地,所述特征值為O到9之間的整數(shù)。本申請(qǐng)實(shí)施例還公開了一種柵格數(shù)據(jù)讀取的方法,包括步驟S201,讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型;步驟S202,依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式;步驟S203,從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷是否第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則執(zhí)行步驟S204,若為第二目標(biāo)數(shù)值,則執(zhí)行步驟S205 ;步驟S204,將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格單元的值,并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中;步驟S205,將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值,并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中;步驟S206,判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則執(zhí)行步驟S207,若否,則返回步驟S203 ;步驟S207,將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格單元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。
優(yōu)選地,所述依據(jù)預(yù)設(shè)提取方式生成的預(yù)設(shè)還原方式包括若預(yù)設(shè)提取方式為按每行提取,則預(yù)設(shè)還原方式為按每行還原;若預(yù)設(shè)提取方式為按每列提取,則預(yù)設(shè)還原方式為按每列還原;若預(yù)設(shè)提取方式為按整個(gè)柵格數(shù)據(jù)提取,則預(yù)設(shè)還原方式為按整個(gè)柵格數(shù)據(jù)還原。優(yōu)選地,步驟S203包括
從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷當(dāng)前目標(biāo)柵格數(shù)據(jù)是否包含特征值,若是,則判定為第二目標(biāo)數(shù)值,若否,則判定為第一目標(biāo)數(shù)值。本申請(qǐng)實(shí)施例還公開了一種柵格數(shù)據(jù)存儲(chǔ)的裝置,包括原始柵格數(shù)據(jù)獲取模塊,用于獲取原始柵格數(shù)據(jù),所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù);柵格單元提取模塊,用于在所述K*L個(gè)柵格單元中依次從第一個(gè)未提取的原始柵格単元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值;第一目標(biāo)數(shù)值生成模塊,用于采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格單元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;第二目標(biāo)數(shù)值生成模塊,用于將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)的原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格單元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;遍歷判斷模塊,用于判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則調(diào)用目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊;若否,則返回柵格單元提取模塊;目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊,用于將所述目標(biāo)柵格単元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、柵格單元提取模塊所述的預(yù)設(shè)提取方式及第二目標(biāo)數(shù)值生成模塊中所述的9-N個(gè)特征值。本申請(qǐng)實(shí)施例還公開了一種柵格數(shù)據(jù)讀取的裝置,包括目標(biāo)柵格數(shù)據(jù)讀取模塊,用于讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型;預(yù)設(shè)還原方式生成模塊,用于依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式;目標(biāo)數(shù)值判斷模塊,用于從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷是為第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則調(diào)用第一目標(biāo)數(shù)值還原模塊,若為第二目標(biāo)數(shù)值,則調(diào)用第二目標(biāo)數(shù)值還原模塊;第一目標(biāo)數(shù)值還原模塊,用于將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格単元的值并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中;第二目標(biāo)數(shù)值還原模塊,用于將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中;遍歷判斷模塊,用于判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則調(diào)用原始柵格數(shù)據(jù)獲取模塊,若否,則返回目標(biāo)數(shù)值判斷模塊;原始柵格數(shù)據(jù)獲取模塊,用于將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行, L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。
與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn)第一,本申請(qǐng)對(duì)柵格數(shù)據(jù)中所有柵格單元的值都分布在O到9之間的整數(shù)的柵格數(shù)據(jù),在原始柵格數(shù)據(jù)中依次提取9個(gè)連續(xù)柵格單元,采用占4字節(jié)的int型的第一目標(biāo)數(shù)值替代所述9個(gè)連續(xù)原始柵格單元的值,這樣原先需要9個(gè)字節(jié)的原始柵格數(shù)據(jù),采用本申請(qǐng)4個(gè)字節(jié)即可存儲(chǔ),這樣可以大大節(jié)省存儲(chǔ)空間,而且在進(jìn)行柵格數(shù)據(jù)備份時(shí),可以用更少的資源存儲(chǔ)同樣的信息,充分利用了存儲(chǔ)空間。第二,若所取柵格單元為N不足9個(gè),則補(bǔ)充9-N個(gè)特征值后產(chǎn)生第二目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值。這種情況下,原先需要9個(gè)字節(jié)的原始柵格數(shù)據(jù),用4字節(jié)仍然可以存儲(chǔ)。說明本申請(qǐng)不受柵格單元數(shù)的影響,在柵格單元不是9的倍數(shù)時(shí)仍然可以適用。第三,對(duì)于存儲(chǔ)空間較小的柵格文件,讀寫該柵格文件的操作也相應(yīng)變少,可以提高柵格數(shù)據(jù)的處理效率。第四,現(xiàn)在的GIS軟件應(yīng)用中,客戶端一般都是需要通過網(wǎng)絡(luò)獲取遠(yuǎn)程服務(wù)器上的柵格數(shù)據(jù),本申請(qǐng)可以用較少的數(shù)據(jù)量表達(dá)同樣的柵格單元值信息,這樣服務(wù)器端相應(yīng)減少了給客戶端的網(wǎng)絡(luò)數(shù)據(jù)傳輸量,從而減少了服務(wù)器負(fù)擔(dān),提高了柵格數(shù)據(jù)的網(wǎng)絡(luò)傳輸效率。第五,在全球化的搜索引擎應(yīng)用中,搜索引擎的總服務(wù)器位于ー個(gè)國(guó)家,其他國(guó)家的服務(wù)器需要訪問總服務(wù)器獲取備份數(shù)據(jù),采用本申請(qǐng)所述存儲(chǔ)方法可以提高獲取備份數(shù)據(jù)的效率,同時(shí)存儲(chǔ)在本國(guó)服務(wù)器中也占用較少的存儲(chǔ)空間,多個(gè)國(guó)家存儲(chǔ)相同數(shù)據(jù),采用本申請(qǐng)中所述存儲(chǔ)方法也降低了存儲(chǔ)成本。這樣當(dāng)客戶端發(fā)出捜索信息的請(qǐng)求后,服務(wù)器端相應(yīng)減少給客戶端的網(wǎng)絡(luò)數(shù)據(jù)傳輸量,有效改善搜索效率。如果未采用本申請(qǐng)所述方法存儲(chǔ)數(shù)據(jù),客戶端系統(tǒng)一直在忙于等待接收服務(wù)器端的柵格數(shù)據(jù),這樣,系統(tǒng)性能必定下降。使用傳統(tǒng)的按每柵格単元最小I字節(jié)存儲(chǔ)方式,每傳輸9n個(gè)字節(jié),在本申請(qǐng)?zhí)岬男碌姆椒ㄏ?,相?yīng)的只需要傳輸4n個(gè)字節(jié),大大降低網(wǎng)絡(luò)傳輸量,提高系統(tǒng)響應(yīng)速度,同樣,數(shù)據(jù)量較少的柵格文件,讀寫文件操作將變少也會(huì)提高系統(tǒng)效率。
圖I是本申請(qǐng)實(shí)施例一種柵格數(shù)據(jù)存儲(chǔ)的方法流程圖2是本申請(qǐng)實(shí)施例中原始柵格數(shù)據(jù)部分柵格單元的示意圖;圖3是本申請(qǐng)對(duì)應(yīng)圖2實(shí)施例的柵格數(shù)據(jù)轉(zhuǎn)換示意圖;圖4是本申請(qǐng)對(duì)應(yīng)圖2實(shí)施例使用本申請(qǐng)?zhí)幚砗蟮牟糠帜繕?biāo)柵格單元示意圖;圖5是本申請(qǐng)實(shí)施例一種柵格數(shù)據(jù)讀取的方法流程圖;圖6是本申請(qǐng)對(duì)應(yīng)圖3實(shí)施例的柵格數(shù)據(jù)還原示意圖;
圖7是本申請(qǐng)實(shí)施例一種柵格數(shù)據(jù)存儲(chǔ)的裝置結(jié)構(gòu)框圖;圖8是本申請(qǐng)實(shí)施例一種柵格數(shù)據(jù)讀取的裝置結(jié)構(gòu)框圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。本申請(qǐng)的核心構(gòu)思之ー在于,針對(duì)ー類特定類型的柵格數(shù)據(jù),即所有柵格單元值都分布在O到9之間的整數(shù)的柵格數(shù)據(jù),傳統(tǒng)做法是,將每個(gè)柵格単元的數(shù)值用I字節(jié)的byte類型來保存,將所有的柵格單元數(shù)值寫到ー個(gè)文件中存數(shù)。本申請(qǐng)就是改進(jìn)此類柵格數(shù)據(jù)的存儲(chǔ)方法,對(duì)此柵格數(shù)據(jù)進(jìn)行存儲(chǔ)結(jié)構(gòu)的重新設(shè)計(jì),將原始柵格數(shù)據(jù)依次提取9個(gè)柵格單元的值,用占4字節(jié)的int型的第一目標(biāo)數(shù)值替代,大大節(jié)省了存儲(chǔ)空間。當(dāng)所取柵格單元為N不足9個(gè)時(shí),則補(bǔ)充9-N個(gè)特征值,用占4字節(jié)的int型第二目標(biāo)數(shù)值替代。保證了本申請(qǐng)?jiān)跂鸥駞g元不是9的倍數(shù)時(shí)仍然可以適用。而且,原先需要9個(gè)字節(jié)的原始柵格數(shù)據(jù),用4字節(jié)仍然可以存儲(chǔ)。以下實(shí)施例的描述中,都有本申請(qǐng)實(shí)施例實(shí)施例一參照?qǐng)D1,示出了本申請(qǐng)ー種柵格數(shù)據(jù)存儲(chǔ)的方法實(shí)施例的步驟流程圖,本申請(qǐng)針對(duì)ー類特定類型的柵格數(shù)據(jù),即所有柵格單元值都分布在O到9之間的整數(shù)的柵格數(shù)據(jù)(比如描述全國(guó)56個(gè)民族分布情況的柵格數(shù)據(jù)),本實(shí)施例具體可以包括如下步驟步驟S101,獲取原始柵格數(shù)據(jù);所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格単元的值都是分布在O到9之間的整數(shù);圖2原始柵格數(shù)據(jù)部分柵格單元的示意圖。原始神柵格數(shù)據(jù)的每個(gè)柵格単元用byte類型來存儲(chǔ),即每個(gè)柵格單元用一字節(jié)的大小來存儲(chǔ);連續(xù)9個(gè)柵格単元,共需要9個(gè)字節(jié)來存儲(chǔ)。步驟S102,在所述K*L個(gè)柵格單元中依次從第一個(gè)未提取的原始柵格單元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值;步驟S103,采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格単元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;在具體實(shí)現(xiàn)中,可以將所述9個(gè)連續(xù)原始柵格單元的值,按順序從高位到低位排列得到ー個(gè)9位整數(shù);所述按順序從高位到低位排列,包括提取到的第一個(gè)柵格単元的值放在最高位,最后ー個(gè)柵格単元的值放在最低位。以圖3為例,分別得到的9個(gè)柵格単元值為“3,4,5,7,0,2,5,6,9”,然后將得到的這9個(gè)數(shù)值,按順序從高位到地位排列,即“345702569”,第I個(gè)柵格単元的值放在最高位,最后ー個(gè)柵格単元的值放在最低的“個(gè)位”上,這樣得到一個(gè)新的整數(shù)345702569。因?yàn)槿我獾?位數(shù)都在int類型的表達(dá)范圍之內(nèi),所以我們用4字節(jié)的int類型來存儲(chǔ)這個(gè)新的整數(shù),即將該9位數(shù)345702569存儲(chǔ)為4字節(jié)的int型。這里需要說明的是,根據(jù)在32位或64位系統(tǒng)上,4字節(jié)的int所能表達(dá)的數(shù)值范圍是-231至231-1,即-2147483648到2147483647。因此本申請(qǐng)中得到的任意9位數(shù)都在int類型的表達(dá)范圍之內(nèi),所以我們用4字節(jié)的int類型來存儲(chǔ)這個(gè)9位整數(shù)。在這種情況下,原先需要9字節(jié)存儲(chǔ)空間的數(shù)據(jù),現(xiàn)在只需要4字節(jié)的存儲(chǔ)空間即可,在進(jìn)行柵格數(shù)據(jù)備份時(shí),可以充分利用存儲(chǔ)資源,大大節(jié)省存儲(chǔ)空間。步驟S104,若提取到的連續(xù)原始柵格單元不足9個(gè),則將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)原始柵格單元的值并存儲(chǔ)在ー個(gè) 目標(biāo)柵格単元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;
步驟S105,判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則執(zhí)行步驟S106 ;若否,則返回步驟S102 ;步驟S106,將所述目標(biāo)柵格単元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、步驟S102中所述的預(yù)設(shè)提取方式及步驟S104中所述的9-N個(gè)特征值。用本申請(qǐng)?zhí)幚砗蟮哪繕?biāo)柵格數(shù)據(jù)部分柵格單元如圖4所示。應(yīng)用本申請(qǐng)實(shí)施例,對(duì)原始柵格數(shù)據(jù)進(jìn)行組裝后再進(jìn)行存儲(chǔ),可減少存儲(chǔ)空間,尤其是對(duì)于原始柵格數(shù)據(jù)中,柵格單元的值大部分分布在O到9之間,并且分布很集中,其他范圍數(shù)值為所占比重很小時(shí),則可以很大程度的減少存儲(chǔ)占用空間。比如全國(guó)范圍內(nèi)人口的民族分布情況,以數(shù)值O代表漢族,I代表壯族,2代表滿族,...,在這種情況下,范圍在O到9之間的數(shù)據(jù)占非常高的比重,也很集中,對(duì)這類數(shù)據(jù)應(yīng)用本申請(qǐng)實(shí)施例能有效利用存儲(chǔ)空間,節(jié)省柵格數(shù)據(jù)的存儲(chǔ)空間,提高柵格數(shù)據(jù)的處理效率。實(shí)施例ニ 需要說明的是,本申請(qǐng)對(duì)提取柵格數(shù)據(jù)的具體順序不做要求,只要能按順序提取完所有的柵格單元就可以,可以按每行對(duì)原始柵格數(shù)據(jù)進(jìn)行提取,也可以按每列對(duì)原始柵格數(shù)據(jù)進(jìn)行提取,還可以按整個(gè)柵格數(shù)據(jù)提取,本申請(qǐng)對(duì)此不加限定。下面詳細(xì)說明提取和解析的具體過程。按每行對(duì)原始柵格數(shù)據(jù)進(jìn)行提取時(shí),假設(shè)柵格的列數(shù)為L(zhǎng)列,行數(shù)為K行;對(duì)于每一行χ(0<=χ<=Κ),當(dāng)L是9的倍數(shù)時(shí)候,姆行處理后得到L/9個(gè)整數(shù),第i (i > = O且i <= L/9-丨,編號(hào)從0開始)個(gè)處理后的整數(shù)是由原柵格單元的第9*i個(gè)柵格単元到第9* (i+1)-I個(gè)柵格單元的共9個(gè)柵格單元連續(xù)排列構(gòu)成ー個(gè)新的int數(shù)值。如此循環(huán)處理,直到處理完這一整行的柵格單元。然后再處理下一行,直到處理完所有行的數(shù)據(jù)。當(dāng)L不是9的倍數(shù)時(shí),每行處理最后一定會(huì)剩下N個(gè)柵格単元,O < N < 9。對(duì)此處理方法是不足9個(gè)的補(bǔ)充特征值。所述特征值是O到9之間的整數(shù)。這里以O(shè)為例,當(dāng)提取到不足9個(gè)柵格單元3、5、7、9、2,則可以補(bǔ)充4個(gè)O值柵格單元,最后補(bǔ)充所得的9個(gè)連續(xù)柵格單元為 3、5、7、9、2、0、0、0、0。與提取相對(duì)應(yīng)的解析過程當(dāng)L是9的倍數(shù)吋,獲取原柵格單元的第j (j > = O且j < = L-1)個(gè)柵格単元的值辦法讀第[j/9](符號(hào)[]表示j除9然后取最大整數(shù))個(gè)int值,這肯定是個(gè)9位數(shù),從左到右以編號(hào)I開始取其第(j%9+l)位的數(shù)字,即為此行的第j個(gè)柵格単元的值。當(dāng)L不是9的倍數(shù)時(shí),在解析時(shí)候最后ー個(gè)整數(shù)的前L% 9位數(shù)分別對(duì)應(yīng)原柵格數(shù)據(jù)此行的的最后L% 9個(gè)柵格単元值。按每列處理時(shí)和按每行處理時(shí)類似,在此不作贅述。按整個(gè)柵格數(shù)據(jù)提取吋,一共K*L個(gè)柵格単元,把所有的行連接起來進(jìn)行順次處理,當(dāng)K*L是9的倍數(shù)時(shí),可以得到K*L/9個(gè)整數(shù),第i(i > = O且i <= K*L/9-l,編號(hào)從 O開始)個(gè)處理后的整數(shù)是由原柵格單元的第[(9*i)/L]行,第9*i-[(9*i)/L]*L列柵格單元開始起,連續(xù)9個(gè)柵格單元按順序排列得到ー個(gè)9位的int型整數(shù)。當(dāng)K*L不是9的倍數(shù)時(shí),把所有的行“串”起來,從第一個(gè)柵格単元開始,每9個(gè)原始柵格單元的值生成ー個(gè)9位整數(shù),直到整個(gè)柵格単元數(shù)據(jù)的最后幾個(gè)柵格単元,再按缺少的補(bǔ)充特征的方法進(jìn)行處理。與提取相對(duì)應(yīng)的解析過程當(dāng)K*L是9的倍數(shù)吋,獲取原柵格單元的第i行((O< =i < = K-1)第j列(j > = O且j < = L-1)個(gè)柵格單元的值辦法讀處理后的第[(i*L+j)/9]個(gè)整數(shù),這是個(gè)9位的整數(shù),從左到右,編號(hào)從I開始,取其第((i*L+j) % 9+1)位數(shù)字,即為此原柵格單元的值。當(dāng)K*L不是9的倍數(shù)時(shí),可以得到[K*L/9]+l個(gè)整數(shù),其前[K*L/9]個(gè)整數(shù)的讀取與當(dāng)K*L = 9的倍數(shù)時(shí)候相同處理方法,只有最后ー個(gè)整數(shù),在寫的時(shí)候需要最后補(bǔ)充(9-K*L% 9)個(gè)O以湊夠9位;在解析時(shí)候最后ー個(gè)整數(shù)的前K*L% 9位數(shù)分別對(duì)應(yīng)原柵格數(shù)據(jù)的最后K*L% 9個(gè)柵格単元值。實(shí)施例三以實(shí)際項(xiàng)目中的全國(guó)地形地貌柵格數(shù)據(jù)為例,按本申請(qǐng)所述的方法與其他方法生成的柵格數(shù)據(jù)比較在全國(guó)范圍內(nèi),同一分辨率為30米的條件下,柵格象素大小為161360*134724的柵格單元中以O(shè)到9的值分別代表各種山地,平原的地貌類型。在這種情況下,若采用普通的每個(gè)柵格単元用byte類型來存儲(chǔ)數(shù)據(jù)的柵格數(shù)據(jù)組織方法,則需要的存儲(chǔ)空間約為20. 25Gb,如果采用本申請(qǐng)所述的方法進(jìn)行組裝存儲(chǔ),則需要的存儲(chǔ)空間約為9Gb,節(jié)省了 IlGb的存儲(chǔ)空間,使用約原先一半的存儲(chǔ)資源即可存儲(chǔ)同樣的柵格單元信息,這樣不但節(jié)省了存儲(chǔ)空間,減少了文件讀寫的數(shù)據(jù)量,同時(shí)也減少了柵格數(shù)據(jù)的網(wǎng)絡(luò)傳輸量,大大提高了系統(tǒng)的性能及用戶體驗(yàn)感。需要說明的是,本申請(qǐng)之所以限制柵格單元的是指,是因?yàn)?字節(jié)的int型所能表達(dá)的數(shù)值范圍為-2147483648到2147483647,如果柵格單元的值有取值為10的,此時(shí)將連續(xù)9個(gè)柵格単元的值連在一起得到的就不是9位數(shù),并且這個(gè)值很可能不在int范圍內(nèi),也就是大于2147483647。例如,這樣的9個(gè)柵格單元值10,10,10,10,10,9,9,9,9 ;連在一起得到“ 10101010109999”,顯然這個(gè)數(shù)已經(jīng)超過int的最大值2147483647。但是,如果柵格單元的值在O到9范圍之間,任意取9個(gè)連續(xù)柵格單元并連在一起,并且得到的值絕對(duì)不大于2147483647。顯然最大的也就是這樣的9個(gè)連續(xù)的柵格單元“9,9,9,9,9,9,9,9,9”,依然可以連在一起,得到“999999999”,而且它明顯小于2147483647,所以可行。故本申請(qǐng)實(shí)施例僅針對(duì)ー類特定類型的柵格數(shù)據(jù),即所有柵格單元值都分布在O到9之間的整數(shù)的柵格數(shù)據(jù)。顯然本申請(qǐng)同樣適用于柵格單元的值在
,
,
,
,
, [O,3],
,
范圍內(nèi)的整數(shù),因?yàn)樵谏鲜龇秶鷥?nèi)的連續(xù)9個(gè)柵格単元的值組成的9位數(shù)在4字節(jié)的int型所能表達(dá)的范圍內(nèi)。需要進(jìn)ー步說明的是,在32位計(jì)算機(jī)系統(tǒng)上,按本專利方法,可以將普通的9字節(jié)減少到只需要4字節(jié);還有一種理論上可行的最小內(nèi)存布局方式,即以ニ進(jìn)制位相連,取代普通的每個(gè)柵格単元用I字節(jié)相連。數(shù)值9需要4位ニ進(jìn)制來表示,所以,4字節(jié)的32位最可存儲(chǔ)8個(gè)柵格単元,弱于本專利提出的方法,而且,以4位ニ進(jìn)制將8個(gè)連續(xù)的柵格單元處理成一個(gè)新的4字節(jié)大整數(shù),存取復(fù)雜度遠(yuǎn)高于本方法。除此之外,理論上沒有比本方法更節(jié)省存儲(chǔ)空間的方法了。實(shí)施例四
參照?qǐng)D5,示出了本申請(qǐng)的ー種柵格數(shù)據(jù)讀取的方法實(shí)施例的步驟流程圖,本實(shí)施例具體可以包括如下步驟步驟S201,讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格単元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型;步驟S202,依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式;所述依據(jù)預(yù)設(shè)提取方式生成的預(yù)設(shè)還原方式包括若預(yù)設(shè)提取方式為按每行提取,則預(yù)設(shè)還原方式為按每行還原;若預(yù)設(shè)提取方式為按每列提取,則預(yù)設(shè)還原方式為按每列還原;若預(yù)設(shè)提取方式為按整個(gè)柵格數(shù)據(jù)提取,則預(yù)設(shè)還原方式為按整個(gè)柵格數(shù)據(jù)還原;例如,目標(biāo)柵格數(shù)據(jù)為“345702569”,預(yù)設(shè)提取方式是按每行提取,則對(duì)應(yīng)的預(yù)設(shè)還原方式是按每行還原,即將目標(biāo)柵格數(shù)據(jù)還原為一行,具體還原結(jié)果參見圖6.步驟S203,從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷是否第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則執(zhí)行步驟S204,若為第二目標(biāo)數(shù)值,則執(zhí)行步驟S205 ;在本申請(qǐng)的ー種優(yōu)選實(shí)施例中,所述步驟S203可以包括從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷當(dāng)前目標(biāo)柵格數(shù)據(jù)是否包含特征值,若是,則判定為第二目標(biāo)數(shù)值,若否,則判定為第一目標(biāo)數(shù)值。步驟S204,將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格單元的值并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中;步驟S205,將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中;例如,所述第二目標(biāo)數(shù)值為365780000,當(dāng)讀取到的特征值為9-5即特征為4個(gè)時(shí),還原后對(duì)應(yīng)的原始柵格數(shù)據(jù)為3,6,5,7,8。當(dāng)讀取到的特征值為9-7即特征為2個(gè)時(shí),還原后對(duì)應(yīng)的原始柵格數(shù)據(jù)為3,6,5,7,8,0,O.步驟S206,判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則執(zhí)行步驟S207,若否,則返回步驟S203 ;步驟S207,將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格單元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組 合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。實(shí)施例五在GIS廣泛應(yīng)用于各個(gè)行業(yè)形式下,越來越多的系統(tǒng)都涉及到分類型柵格數(shù)據(jù)的處理,非常適合使用本申請(qǐng)進(jìn)行存取處理,下面以搜索引擎Google為例進(jìn)行說明。Google的總部在加利福尼亞,其他國(guó)家的服務(wù)器訪問的是本國(guó)的服務(wù)器,但是本國(guó)服務(wù)器需要訪問總部的服務(wù)器獲得備份數(shù)據(jù)。采用本申請(qǐng)?zhí)峁┑拇鎯?chǔ)方法,原先占用9字節(jié)存儲(chǔ)空間的數(shù)據(jù)現(xiàn)在只需要4字節(jié)就可以存儲(chǔ),這樣大大減少了存儲(chǔ)空間。當(dāng)各國(guó)服務(wù)器訪問總部服務(wù)器時(shí),采用本申請(qǐng)所述的方法,由于訪問的數(shù)據(jù)存儲(chǔ)空間減少,所以相應(yīng)的訪問時(shí)間也會(huì)減少,同時(shí)備份數(shù)據(jù)進(jìn)行遠(yuǎn)程傳輸?shù)乃俾始涌?,提高了?shù)據(jù)遠(yuǎn)程傳輸?shù)男?,提高了?shù)據(jù)服務(wù)的質(zhì)量。當(dāng)各國(guó)服務(wù)器都選用本申請(qǐng)所述方法存儲(chǔ)備份數(shù)據(jù)后,數(shù)據(jù)備份節(jié)省了大量空間,客戶端進(jìn)行搜索時(shí),通過訪問本國(guó)服務(wù)器,本國(guó)服務(wù)器提供給客戶端的數(shù)據(jù)存儲(chǔ)量也相應(yīng)減少,這樣加快了捜索響應(yīng)的時(shí)間,大大加快了搜索結(jié)果數(shù)據(jù)的傳輸。使用傳統(tǒng)的按每柵格単元最小I字節(jié)存儲(chǔ)方式,每傳輸9n個(gè)字節(jié),在本申請(qǐng)?zhí)岬男碌姆椒ㄏ?,相?yīng)的只需要傳輸4n個(gè)字節(jié),大大降低網(wǎng)絡(luò)傳輸量,提高系統(tǒng)響應(yīng)速度,同樣,數(shù)據(jù)量較少的柵格文件,讀寫文件操作將變少,讀取相同數(shù)據(jù)量36η個(gè)字節(jié)的的柵格文件,傳統(tǒng)方法需要讀取9次,使用本申請(qǐng)所述方法只需要讀取4次,這樣減少了讀寫文件的操作次數(shù),避免了不必要的讀取操作,同時(shí)提高了系統(tǒng)效率。最后,需要補(bǔ)充說明的是現(xiàn)在的GIS軟件應(yīng)用中,客戶端一般都是需要通過網(wǎng)絡(luò)獲取遠(yuǎn)程服務(wù)器上的柵格數(shù)據(jù),這樣,對(duì)柵格數(shù)據(jù),用越少的數(shù)據(jù)量表達(dá)越多的柵格單元值信息,就意味著服務(wù)器端可以減少給客戶端的網(wǎng)絡(luò)數(shù)據(jù)傳輸量,從而有效的改善用戶的體驗(yàn)感。相反,客戶端系統(tǒng)一直在忙于等待接受服務(wù)器端的柵格數(shù)據(jù),這樣,系統(tǒng)性能必定下降。使用傳統(tǒng)的按每柵格単元最小I字節(jié)存儲(chǔ)方式,每傳輸9η個(gè)字節(jié),在本專利提的新的方法下,相應(yīng)的只需要傳輸4η個(gè)字節(jié),大大降低網(wǎng)絡(luò)傳輸量,提高系統(tǒng)響應(yīng)速度,同樣,數(shù)據(jù)量較少的柵格文件,讀寫文件操作將變少也會(huì)提高系統(tǒng)效率。實(shí)施例六
參照?qǐng)D7,示出了本申請(qǐng)的ー種柵格數(shù)據(jù)存儲(chǔ)的裝置實(shí)施例的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括如下模塊原始柵格數(shù)據(jù)獲取模塊301,用于獲取原始柵格數(shù)據(jù),所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù);柵格單元提取模塊302,用于在所述K*L個(gè)柵格單元中依次從第一個(gè)未提取的原始柵格単元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值;第一目標(biāo)數(shù)值生成模塊303,用于采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格単元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格單元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型; 第二目標(biāo)數(shù)值生成模塊304,用于將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)的原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格單元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的一個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;遍歷判斷模塊305,用于判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則調(diào)用目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊306 ;若否,則返回柵格單元提取模塊302 ;目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊306,用于將所述目標(biāo)柵格単元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、柵格單元提取模塊所述的預(yù)設(shè)提取方式及第二目標(biāo)數(shù)值生成模塊中所述的9-N個(gè)特征值。對(duì)于圖7所示的裝置實(shí)施例而言,由于其與圖I所示的方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。實(shí)施例七參照?qǐng)D8,示出了本申請(qǐng)的ー種柵格數(shù)據(jù)讀取的裝置實(shí)施例的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括如下模塊目標(biāo)柵格數(shù)據(jù)讀取模塊401,用于讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型;預(yù)設(shè)還原方式生成模塊402,用于依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式;目標(biāo)數(shù)值判斷模塊403,用于從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷是為第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則調(diào)用第一目標(biāo)數(shù)值還原模塊,若為第二目標(biāo)數(shù)值,則調(diào)用第二目標(biāo)數(shù)值還原模塊;在本申請(qǐng)的ー種優(yōu)選實(shí)施例中,所述目標(biāo)數(shù)值判斷模塊403包括判斷子模塊4031,用于依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷當(dāng)前的柵格單元值是否包含特征值,若是,則判定為目第二目標(biāo)數(shù)值,若否,則判定為第一目標(biāo)數(shù)值。第一目標(biāo)數(shù)值還原模塊405,用于將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格單元的值并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中;第二目標(biāo)數(shù)值還原模塊406,用于將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中;遍歷判斷模塊407,用于判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則調(diào)用原始柵格數(shù)據(jù)獲取模塊408,若否,則返回目標(biāo)數(shù)值判斷模塊403 ;原始柵格數(shù)據(jù)獲取模塊408,用于將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值 為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。對(duì)于圖8所示的裝置實(shí)施例而言,由于其與圖6所示的方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另ー個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。以上對(duì)本申請(qǐng)所提供的ー種柵格數(shù)據(jù)的存儲(chǔ)、讀取方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.ー種柵格數(shù)據(jù)的存儲(chǔ)方法,其特征在于,包括 步驟S101,獲取原始柵格數(shù)據(jù),所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù); 步驟S102,在所述K*L個(gè)柵格単元中依次從第一個(gè)未提取的原始柵格單元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值; 步驟S103,采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格單元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型; 步驟S104,若提取到的連續(xù)原始柵格單元不足9個(gè),則將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)的原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格単元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型; 步驟S105,判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則執(zhí)行步驟S106 ;若否,則返回步驟S102 ; 步驟S106,將所述目標(biāo)柵格単元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、步驟S102中所述的預(yù)設(shè)提取方式及步驟S104中所述的9-N個(gè)特征值。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述預(yù)設(shè)提取方式包括 按每行或每列提??; 所述按每行提取包括從左到右或從右到左提??;若每行最后提取到的連續(xù)原始柵格單元不足9個(gè),則執(zhí)行步驟S104; 所述按每列提取包括從上到下或從下到上提?。幻苛凶詈筇崛〉降倪B續(xù)原始柵格單元不足9個(gè),則執(zhí)行步驟S104。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述預(yù)設(shè)提取方式包括 按整個(gè)柵格數(shù)據(jù)提??;所述按整個(gè)柵格數(shù)據(jù)提取包括把所有的行連接起來進(jìn)行順次提??;整個(gè)柵格數(shù)據(jù)的最后幾個(gè)連續(xù)柵格單元不足9個(gè),則執(zhí)行步驟S104。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述步驟S103中根據(jù)9個(gè)連續(xù)原始柵格單元的值生成ー個(gè)9位整數(shù)包括 將所述9個(gè)連續(xù)原始柵格單元的值,按順序從高位到低位排列得到ー個(gè)9位整數(shù); 所述按順序從高位到低位排列,包括提取到的第一個(gè)柵格単元的值放在最高位,最后一個(gè)柵格單兀的值放在最低位。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述特征值為O到9之間的整數(shù)。
6.一種柵格數(shù)據(jù)的讀取方法,其特征在于,包括 步驟S201,讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型; 步驟S202,依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式; 步驟S203,從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格単元值,判斷是否第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則執(zhí)行步驟S204,若為第二目標(biāo)數(shù)值,則執(zhí)行步驟S205 ; 步驟S204,將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格單元的值,并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中; 步驟S205,將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值,并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中; 步驟S206,判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則執(zhí)行步驟S207,若否,則返回步驟S203 ; 步驟S207,將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格單元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在干, 所述依據(jù)預(yù)設(shè)提取方式生成的預(yù)設(shè)還原方式包括 若預(yù)設(shè)提取方式為按每行提取,則預(yù)設(shè)還原方式為按每行還原; 若預(yù)設(shè)提取方式為按每列提取,則預(yù)設(shè)還原方式為按每列還原; 若預(yù)設(shè)提取方式為按整個(gè)柵格數(shù)據(jù)提取,則預(yù)設(shè)還原方式為按整個(gè)柵格數(shù)據(jù)還原。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟S203包括 從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷當(dāng)前目標(biāo)柵格數(shù)據(jù)是否包含特征值,若是,則判定為第二目標(biāo)數(shù)值,若否,則判定為第一目標(biāo)數(shù)值。
9.ー種特殊分類型柵格數(shù)據(jù)的存儲(chǔ)裝置,其特征在于,包括 原始柵格數(shù)據(jù)獲取模塊,用于獲取原始柵格數(shù)據(jù),所述原始柵格數(shù)據(jù)包括原始柵格數(shù)據(jù)基本信息和原始柵格單元的值;所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù); 柵格單元提取模塊,用于在所述K*L個(gè)柵格単元中依次從第一個(gè)未提取的原始柵格單元開始,按照預(yù)設(shè)提取方式提取9個(gè)連續(xù)原始柵格單元的值; 第一目標(biāo)數(shù)值生成模塊,用于采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)原始柵格單元的值并存儲(chǔ)在一個(gè)目標(biāo)柵格單元中;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)原始柵格單元的值生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第一目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型; 第二目標(biāo)數(shù)值生成模塊,用于將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)的原始柵格單元的值并存儲(chǔ)在ー個(gè)目標(biāo)柵格単元中;所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)原始柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述存儲(chǔ)包括將第二目標(biāo)數(shù)值存儲(chǔ)為4字節(jié)的int型;遍歷判斷模塊,用于判斷是否遍歷完所述K*L個(gè)柵格単元,若是,則調(diào)用目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊;若否,則返回柵格單元提取模塊; 目標(biāo)柵格數(shù)據(jù)存儲(chǔ)模塊,用于將所述目標(biāo)柵格單元的值和目標(biāo)柵格數(shù)據(jù)的基本信息組織為目標(biāo)柵格數(shù)據(jù)并存儲(chǔ);所述目標(biāo)柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、柵格單元提取模塊所述的預(yù)設(shè)提取方式及第二目標(biāo)數(shù)值生成模塊中所述的9-N個(gè)特征值。
10.ー種特殊分類型柵格數(shù)據(jù)的讀取裝置,其特征在于,包括 目標(biāo)柵格數(shù)據(jù)讀取模塊,用于讀取目標(biāo)柵格數(shù)據(jù),所述目標(biāo)柵格數(shù)據(jù)包括目標(biāo)柵格數(shù)據(jù)基本信息以及目標(biāo)柵格単元的值;所述目標(biāo)柵格數(shù)據(jù)的基本信息包括原始柵格數(shù)據(jù)基本信息、預(yù)設(shè)提取方式及9-N個(gè)特征值;所述目標(biāo)柵格單元的值包括第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值;所述第一目標(biāo)數(shù)值為根據(jù)9個(gè)連續(xù)柵格單元的值生成的ー個(gè)9位整數(shù);所述第二目標(biāo)數(shù)值為根據(jù)所述N個(gè)連續(xù)柵格單元的數(shù)值補(bǔ)充9-N個(gè)特征值后生成的ー個(gè)9位整數(shù);所述第一目標(biāo)數(shù)值和第二目標(biāo)數(shù)值均存儲(chǔ)為4字節(jié)的int型; 預(yù)設(shè)還原方式生成模塊,用于依據(jù)預(yù)設(shè)提取方式生成預(yù)設(shè)還原方式; 目標(biāo)數(shù)值判斷模塊,用于從第一個(gè)未解析的目標(biāo)柵格數(shù)據(jù)開始依次解析所述目標(biāo)柵格數(shù)據(jù)中的柵格單元值,判斷是為第一目標(biāo)數(shù)值或第二目標(biāo)數(shù)值;若為第一目標(biāo)數(shù)值,則調(diào)用第一目標(biāo)數(shù)值還原模塊,若為第二目標(biāo)數(shù)值,則調(diào)用第二目標(biāo)數(shù)值還原模塊; 第一目標(biāo)數(shù)值還原模塊,用于將所述每個(gè)第一目標(biāo)數(shù)值還原成9個(gè)連續(xù)原始柵格單元的值并按照預(yù)設(shè)還原方式還原到9個(gè)原始柵格單元中; 第二目標(biāo)數(shù)值還原模塊,用于將所述每個(gè)第二目標(biāo)數(shù)值刪去9-N個(gè)特征值還原成N個(gè)原始連續(xù)柵格単元的值并按照預(yù)設(shè)還原方式還原到N個(gè)原始柵格單元中; 遍歷判斷模塊,用于判斷是否遍歷完所述目標(biāo)柵格數(shù)據(jù),若是,則調(diào)用原始柵格數(shù)據(jù)獲取模塊,若否,則返回目標(biāo)數(shù)值判斷模塊; 原始柵格數(shù)據(jù)獲取模塊,用于將所述原始柵格單元的值和原始柵格數(shù)據(jù)基本信息組織為原始柵格數(shù)據(jù)并存儲(chǔ);所述原始柵格單元的值為第一目標(biāo)數(shù)值和/或第二目標(biāo)數(shù)值。所述原始柵格數(shù)據(jù)基本信息為原始柵格數(shù)據(jù)包括K*L個(gè)柵格単元;其中,所述K為行,L為列;所述原始柵格單元的值都是分布在O到9之間的整數(shù)。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N柵格數(shù)據(jù)的存儲(chǔ)、讀取方法及裝置,其中,所述柵格數(shù)據(jù)存儲(chǔ)的方法包括步驟S101,獲取原始柵格數(shù)據(jù);步驟S102,依次提取9個(gè)連續(xù)柵格單元的值;步驟S103,采用第一目標(biāo)數(shù)值代替所述9個(gè)連續(xù)柵格單元的值并存儲(chǔ)在一個(gè)目標(biāo)柵格單元中;步驟S104,若提取到的連續(xù)柵格單元不足9個(gè),則將不足9個(gè)連續(xù)原始柵格單元的柵格單元數(shù)記為N,采用第二目標(biāo)數(shù)值代替所述N個(gè)原始柵格單元的值并存儲(chǔ)在一個(gè)目標(biāo)柵格單元中;步驟S105,判斷是否遍歷完K*L個(gè)柵格單元,若是,則執(zhí)行步驟S106;若否,則返回步驟S102。本申請(qǐng)可以節(jié)省柵格數(shù)據(jù)的存儲(chǔ)空間,提高柵格數(shù)據(jù)的處理效率。
文檔編號(hào)G06F17/30GK102867023SQ201210291599
公開日2013年1月9日 申請(qǐng)日期2012年8月15日 優(yōu)先權(quán)日2012年8月15日
發(fā)明者孫成寶, 鄭國(guó)柱 申請(qǐng)人:北京地拓科技發(fā)展有限公司