專利名稱:一種數(shù)據(jù)存儲(chǔ)方法和系統(tǒng)及數(shù)據(jù)管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)及信息處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法和系統(tǒng)及數(shù)據(jù)管理方法。
背景技術(shù):
地理信息系統(tǒng)(Geographic Information System, GIS)是一種具有采集空間數(shù)據(jù)并存儲(chǔ)、管理、分析與表現(xiàn)空間信息的計(jì)算機(jī)系統(tǒng)。采用GIS技術(shù)使高效管理具有空間分布特征的原始數(shù)據(jù)及其制圖輸出成為可能,并逐步成為現(xiàn)代企業(yè)管理和政府決策的有力助手。數(shù)據(jù)則是地理信息系統(tǒng)的基礎(chǔ),在現(xiàn)有的系統(tǒng)開發(fā)設(shè)計(jì)中,投入成本最大的就是數(shù)據(jù)處理,其投入費(fèi)用占系統(tǒng)建立和維護(hù)的70%以上。從應(yīng)用的角度來(lái)看,近幾年GIS的應(yīng)用領(lǐng)域不斷擴(kuò)大,出現(xiàn)了大量成熟的商業(yè)GIS平臺(tái),空間數(shù)據(jù)的建設(shè)越來(lái)越受到重視。基于空間數(shù)據(jù)基礎(chǔ)設(shè)施的建設(shè),人們開始了空間數(shù)據(jù)共享和互操作的研究。但是多種數(shù)據(jù)格式的互相轉(zhuǎn)換,均需要以柵格圖像矢量化為前提。采用柵格圖像,取消矢量化數(shù)據(jù)的步驟是對(duì)GIS數(shù)據(jù)處理的發(fā)展趨勢(shì),提出了一些基于柵格數(shù)據(jù)的地理信息系統(tǒng)技術(shù)體系,并得到了應(yīng)用實(shí)踐?;跂鸥駭?shù)據(jù)的地理信息系統(tǒng),根據(jù)地理信息系統(tǒng)所采用的數(shù)據(jù)類型,可以將地理信息系統(tǒng)分為基于矢量數(shù)據(jù)的地理信息系統(tǒng)(簡(jiǎn)稱矢量地理信息系統(tǒng),Vector GIS)、基于柵格數(shù)據(jù)的地理信息系統(tǒng)(簡(jiǎn)稱柵格地理信息系統(tǒng),Raster GIS)、以及基于混合數(shù)據(jù)的地理信息系統(tǒng)。柵格數(shù)據(jù)是指在空間和亮度上都已經(jīng)離散化了的圖像,常見(jiàn)的數(shù)據(jù)有IFF、 BMP、PCX、JPEG等格式的數(shù)據(jù)?;跂鸥駭?shù)據(jù)的地理信息系統(tǒng),是指系統(tǒng)所利用的數(shù)據(jù)模型以柵格數(shù)據(jù)為主,基于柵格數(shù)據(jù)實(shí)現(xiàn)地理信息系統(tǒng)的功能。矢量數(shù)據(jù)結(jié)構(gòu)和柵格數(shù)據(jù)結(jié)構(gòu)是GIS中常用的兩種數(shù)據(jù)結(jié)構(gòu);在柵格數(shù)據(jù)結(jié)構(gòu)中,對(duì)每個(gè)網(wǎng)格給出相應(yīng)的屬性值來(lái)表示地理實(shí)體的一種數(shù)據(jù)組織形式;譬如,對(duì)每個(gè)網(wǎng)格用一高度值h來(lái)表示該網(wǎng)格的地面高度,h用實(shí)數(shù)來(lái)保存;再例如,對(duì)每個(gè)網(wǎng)格用一整數(shù)t 來(lái)表示該網(wǎng)格所在的土地類型,1表示草地,2表示沼澤地,3表示林地,…,等等;所以,在實(shí)際工作中,對(duì)柵格數(shù)據(jù)的存儲(chǔ)與讀寫應(yīng)用非常廣泛。由于GIS等系統(tǒng)中數(shù)據(jù)量巨大,存儲(chǔ)這些數(shù)據(jù)所需的存儲(chǔ)空間也相當(dāng)龐大。除了現(xiàn)有的壓縮等手段節(jié)約存儲(chǔ)空間之外,如何充分利用存儲(chǔ)空間,是業(yè)內(nèi)所面臨的急需解決的問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法和系統(tǒng)及數(shù)據(jù)管理方法,可充分利用存儲(chǔ)空間。本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)方法,用于存儲(chǔ)一組數(shù)據(jù),預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,該方法包括根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ;
分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù);將所得到的有效二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,k為正整數(shù),8k > m ;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為彡2的整數(shù);按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。所述待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng)GIS中的柵格數(shù)據(jù)。本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)系統(tǒng),用于存儲(chǔ)一組數(shù)據(jù),預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,該系統(tǒng)包括位數(shù)確定單元,用于根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值V確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m;第一轉(zhuǎn)換單元,用于分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù)字;分割處理單元,用于將所得到的二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)字進(jìn)行分割,得到若干個(gè)數(shù),k為正整數(shù),8k ^ m ;存儲(chǔ)單元,按照預(yù)定規(guī)則保存所述若干個(gè)數(shù)。該系統(tǒng),還包括第二轉(zhuǎn)換單元,用于將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為彡2的整數(shù);所述存儲(chǔ)單元按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。其中,更適宜地,待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng)GIS中的柵格數(shù)據(jù)。本發(fā)明還相應(yīng)的數(shù)據(jù)讀取方法,包括讀取按照預(yù)定規(guī)則保存的若干個(gè)數(shù),將每個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),并順序排列;根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m,以m 位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行重新分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù);將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為預(yù)定格式的數(shù)。本發(fā)明還提供一種數(shù)據(jù)管理方法,包括數(shù)據(jù)存儲(chǔ)根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ;分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制表示;將所得到的二進(jìn)制數(shù)順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,k為正整數(shù),8k ^ m ;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù), L為彡2的整數(shù); 按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)數(shù);數(shù)據(jù)提取讀取按照預(yù)定規(guī)則保存的若干個(gè)數(shù),并轉(zhuǎn)換為二進(jìn)制數(shù)字,按順序排列;根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m,以m 位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行重新分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù);將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為預(yù)定格式的數(shù)。綜上所述,本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法,通過(guò)設(shè)計(jì)柵格數(shù)據(jù)結(jié)構(gòu),不拘泥于現(xiàn)有技術(shù)中慣用的采用一字節(jié)或者二字節(jié)或者四字節(jié)來(lái)存儲(chǔ)數(shù)據(jù)的方式,而是根據(jù)根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值所需的最少位數(shù)來(lái)確定二進(jìn)制數(shù)位數(shù),緊湊排列存儲(chǔ),避免了空間的浪費(fèi)。提出最小存儲(chǔ)空間方法,與采用壓縮技術(shù)等減少數(shù)據(jù)量不是一個(gè)層次概念。對(duì)于采用本發(fā)明方法建立的柵格文件,也同樣可以繼續(xù)采用壓縮技術(shù)等方法做進(jìn)一步處理。本發(fā)明提供的方案中,在讀寫柵格文件時(shí),會(huì)進(jìn)行數(shù)據(jù)的位移和位或處理,基于目前的計(jì)算機(jī)處理能力,這些位操作執(zhí)行效率比較高,所以,采用本方法,相比于傳統(tǒng)做法,以損失很小的運(yùn)行效率,但能得到更大存儲(chǔ)空間的節(jié)省,這在一些應(yīng)用中具有重要的使用價(jià)值。
圖1為本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法的流程圖;圖2為本發(fā)明實(shí)施例中提供的數(shù)據(jù)處理原理示意圖;圖3為本發(fā)明實(shí)施例中提供的數(shù)據(jù)存儲(chǔ)系統(tǒng)架構(gòu)示意圖;圖4為本發(fā)明提供的數(shù)據(jù)讀取方法的流程圖;圖5為本發(fā)明應(yīng)用實(shí)例中GIS地圖。
具體實(shí)施例方式在GIS的應(yīng)用中,經(jīng)常有大量的柵格類型的數(shù)據(jù),柵格類型是由大量的小方格子組成,每個(gè)方格里都存放著相應(yīng)的數(shù)據(jù)。由于數(shù)據(jù)量巨大,存儲(chǔ)這些數(shù)據(jù)所需的存儲(chǔ)空間也相當(dāng)龐大。有鑒于此,本發(fā)明提出一種新的“數(shù)據(jù)存儲(chǔ)與讀取的方法”,利用該方法,可充分利用存儲(chǔ)空間,可以使用最小的存儲(chǔ)空間,來(lái)保存柵格數(shù)據(jù);目前已有的讀寫柵格數(shù)據(jù)的方法,使用了過(guò)大的存儲(chǔ)空間;這在海量柵格數(shù)據(jù)時(shí),相比較于,本發(fā)明可以節(jié)省大量的存儲(chǔ)空間。目前,柵格文件的每個(gè)網(wǎng)格里存儲(chǔ)的數(shù)據(jù)類型一般是單精度值或者雙精度值或者是整數(shù)值。在寫入柵格數(shù)據(jù)之前,知道該柵格的所有網(wǎng)格值的最大值,最大值不超過(guò)64位能表示的范圍。這個(gè)最大值在應(yīng)用中通常可預(yù)先可以確定下來(lái)。比如,用柵格文件來(lái)保存全國(guó)數(shù)字高程模型(DEM,DigitalElevation Model),在不需要高精度值來(lái)保存地面海拔高度情況下,用整數(shù)來(lái)保存每個(gè)網(wǎng)格的高度值。在這個(gè)應(yīng)用中,根據(jù)常識(shí),已知最高峰的海拔高度最大值為8848米,可以明確所有的網(wǎng)格的數(shù)值的最大值不超過(guò)9000米。再比如,用柵格文件來(lái)保存土地類型,那這個(gè)最大值也是可以確定的。具體地,通常GIS系統(tǒng)中柵格文件中的數(shù)據(jù)取值范圍是可以確定的。假設(shè)柵格中最大值為V。目前一般的做法是,根據(jù)V值的大小,每個(gè)網(wǎng)格采用1字節(jié)大小(0SVS 255) 或者 2 字節(jié)(25665535)或者 4 字節(jié)(65536 < V < 232)或者 8 字節(jié)(232 < V < 264)。 比如,V = 380,傳統(tǒng)方法則每個(gè)網(wǎng)格需要2字節(jié)來(lái)保存;本專利提出的方法,是根據(jù)最大值 V的實(shí)際位數(shù)來(lái)存儲(chǔ)每個(gè)網(wǎng)格數(shù)據(jù)。由于最大值V在每個(gè)柵格里是不同的,所以采用的實(shí)際位數(shù)也是不固定的,本發(fā)明的方法就是根據(jù)最大值所需二進(jìn)制數(shù)位數(shù)采用相應(yīng)位數(shù)來(lái)存儲(chǔ)柵格數(shù)據(jù)的方法。例如V = 380,則9位就可以存儲(chǔ)V值。這樣,每個(gè)網(wǎng)格,就比一般做法節(jié)省7位存儲(chǔ)空間;這樣對(duì)整個(gè)柵格,就可以節(jié)省大量的存儲(chǔ)空間。本發(fā)明提供的一種數(shù)據(jù)存儲(chǔ)方法,用于存儲(chǔ)一組數(shù)據(jù),預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,參照?qǐng)D1,該方法包括如下步驟
S01,根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m;S02,分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù)字;S03,將所得到的有效二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,k為正整數(shù),8k > m ;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè) L進(jìn)制數(shù),L為彡2的整數(shù);假定待存儲(chǔ)的一組數(shù)據(jù)中有η個(gè)數(shù)據(jù),將所得到的二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)字進(jìn)行分割,具體包括計(jì)算確定需要用w個(gè)數(shù)來(lái)存儲(chǔ)原先一組數(shù)據(jù)如果 m < 8, w = [m*n/8]+l ;如果 m > 8 并且 m < 16 ;w = [m*n/16] +1 ;如果 m > 16 并且 m < 32 ;w = [m*n/32] +1 ;如果m > 32 并且 m < 64 ;w = [m*n/64] +1 ;[]表示取整;例如,最小位數(shù)是13位的話,對(duì)原先的一組數(shù)據(jù),將每個(gè)數(shù)用16位來(lái)存儲(chǔ),這樣有利于存儲(chǔ);當(dāng)然也可以用8位來(lái)存儲(chǔ),若用8位來(lái)存儲(chǔ),則所需存儲(chǔ)/讀取2w個(gè)數(shù)據(jù),訪問(wèn)效率低于用16位存儲(chǔ)方式;如果m = 8,16,32,64,將待存儲(chǔ)的一組數(shù)據(jù)直接存儲(chǔ)或者轉(zhuǎn)換成L進(jìn)制數(shù)再保存。S04,按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。在此,L進(jìn)制數(shù)是根據(jù)具體所需的數(shù)據(jù)格式確定,如,通常采用十進(jìn)制,也有的采用 16進(jìn)制等。為了是本發(fā)明的原理、特性和優(yōu)點(diǎn)更加清楚,下面結(jié)合具體實(shí)施方案對(duì)本發(fā)明進(jìn)行詳細(xì)描述。實(shí)施例一本實(shí)施例中以待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng)GIS中的柵格數(shù)據(jù)為例進(jìn)行描述,其他數(shù)組的存儲(chǔ)也適用。假設(shè)來(lái)自柵格的一組網(wǎng)格數(shù)據(jù)a,b,c, d,e, f,…一數(shù)組η個(gè),序號(hào)從0開始,直到 η-1。如果表示柵格數(shù)據(jù)的最大值需要的二進(jìn)制數(shù)的最少位數(shù)m < 8 ;首先,計(jì)算輸出結(jié)果字節(jié)數(shù)量w = [m*n/8]+l,[]表示取整;然后對(duì)每個(gè)字節(jié)進(jìn)行計(jì)算值,具體計(jì)算每個(gè)字節(jié)值方法,如下分情況處理(I)對(duì)于 m=l、m = 2,m = 4,m = 8 的情況對(duì)w個(gè)字節(jié)的第i個(gè)字節(jié)(i從0開始計(jì)數(shù),到w-1結(jié)束),取數(shù)組中的對(duì)應(yīng)8個(gè)(m =1情況)或者4個(gè)(m = 2情況)數(shù)據(jù)或者2個(gè)(m = 4情況)或者1個(gè)(m = 8情況), 序號(hào)從 8*i——8*i+7 (m = 1 情況)或者 4*i-—4*i+3 (m = 2 情況)或者 2*i-—2*i+l (m =4情況)或者i(m = 8情況).對(duì)于m = 1情況,將序號(hào)從8*i8*i+7的8個(gè)數(shù)組的數(shù)據(jù),依次分別做移7位、 6位、5位、4位、3位、2位、1位、0位,分別得到8位大小的Al、A2、A3、A4、A5、A6、A7、A8,對(duì)這8個(gè)數(shù)字進(jìn)行位或運(yùn)算,得到8位大小的A值。對(duì)于m = 2情況,將序號(hào)從4*i一一4*i+3 的4個(gè)數(shù)組的數(shù)據(jù),依次分別做移6位、4位、2位、0位,分別得到8位大小的A1、A2、A3、A4, 對(duì)這4個(gè)數(shù)字進(jìn)行位或運(yùn)算,得到8位大小的Dl值。
將Dl值寫入該字節(jié)中。對(duì)于m = 4情況,將序號(hào)從2*i—一2*i+l的2個(gè)數(shù)組的數(shù)據(jù),依次分別做移4位、 0位,分別得到8位大小的A1、A2,對(duì)這2個(gè)數(shù)字進(jìn)行位或運(yùn)算,得到8位大小的D2值。將D2值寫入該字節(jié)中。對(duì)于m = 8情況,其實(shí)就是已知數(shù)組與輸出結(jié)果字節(jié)一對(duì)一的復(fù)制過(guò)程。(II)對(duì)于m = 3、m = 5的情況,方法均是順序采用數(shù)組的m位來(lái)填充8位的字節(jié)組。以Hl = 3為例進(jìn)行說(shuō)明,Hl = 5原理完全一樣。取當(dāng)前數(shù)組的第i =0個(gè)數(shù)據(jù),左移5位,得到8位的Al值,再取數(shù)組的第i = 1 個(gè)數(shù)據(jù),左移2位,得到8位的A2值,再取數(shù)組的第i = 2個(gè)數(shù)據(jù),右移1位,得到8位的A3 值。對(duì)這3個(gè)數(shù)字進(jìn)行位或運(yùn)算,得到8位二進(jìn)制數(shù)值,作為第1個(gè)字節(jié);取數(shù)組的第i = 2個(gè)數(shù)據(jù),與Oxl (為了取出i = 2數(shù)據(jù)的3位的最后一位)進(jìn)行位與運(yùn)算,再左移7位,得到8位的Al值,再取數(shù)組的第i = 3個(gè)數(shù)據(jù),左移4位,得到8位的A2值,再取數(shù)組的第i = 4個(gè)數(shù)據(jù),左移1位,得到8位的A3值,再取數(shù)組的第i = 5個(gè)數(shù)據(jù),右移2位,得到8位的A4值,對(duì)這4個(gè)數(shù)字進(jìn)行位或運(yùn)算,得到8位二進(jìn)制數(shù)值,為第 2個(gè)字節(jié)。對(duì)該數(shù)組后續(xù)的數(shù)據(jù)也進(jìn)行類似的處理,得到第3個(gè),……,W-I字節(jié);對(duì)于最后一個(gè)處理的字節(jié),如果連續(xù)的二進(jìn)制數(shù)取不到8位,則在后面位補(bǔ)0處理。對(duì)于m > 8的情況,基本思想與前述相同,例如,m = 9,傳統(tǒng)做法用16位來(lái)存儲(chǔ)每個(gè)數(shù)值,本方法是用16位來(lái)存儲(chǔ),但是具體做法是取第一個(gè)16位的9位,第2個(gè)16位的9 位有效二進(jìn)制的前7位,這樣得到一個(gè)新的16位的數(shù)據(jù),作為存儲(chǔ)的數(shù)值,以此類推后面的
存儲(chǔ)數(shù)值。如圖2所示,已知的待存儲(chǔ)的數(shù)組為5,2,3,0,4,6,7,1,2,3,5,……。每個(gè)數(shù)值最大值小于8,可以3位二進(jìn)制數(shù)來(lái)表示,即最大位數(shù)m為3,柵格網(wǎng)格數(shù)組,寫入柵格文件的字節(jié)步驟如下S101,分別將這些數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)為101,010,011,000,100,110,111,001,010,011,101,......。S102,順序排列在一起后,按照8位一個(gè)字節(jié)進(jìn)行分割,得到如下數(shù)字10101001 ;10001001 ;10111001 ;010,011,10 ;1......。S103,可將這些數(shù)據(jù)直接保存;或轉(zhuǎn)換為十進(jìn)制數(shù)169137185078……后,寫入柵格文件中。由此可知,本發(fā)明提供的存儲(chǔ)方法中,按順序從第一個(gè)數(shù)的3位2進(jìn)制表示開始, 連續(xù)的取8位,作為本方法的一字節(jié)內(nèi)容。其中,連續(xù)取位,再組合成新8位,在計(jì)算機(jī)處理上,是通過(guò)位移操作和位或運(yùn)算實(shí)現(xiàn)的。之所以要將多個(gè)3位組合成8位,得到一個(gè)值,寫入柵格文件,是因?yàn)槟壳坝?jì)算機(jī)的數(shù)據(jù)類型支持的最小單元是1字節(jié),就是8位二進(jìn)制。不便于直接讀寫類似3位2進(jìn)制這樣的數(shù)據(jù),所以要組合成8位。這樣克服現(xiàn)有技術(shù)中慣用的采用一字節(jié)8位來(lái)存儲(chǔ)最大數(shù)據(jù)位為3的方法,避免了空間的浪費(fèi)。本發(fā)明還提供相應(yīng)的一種數(shù)據(jù)存儲(chǔ)系統(tǒng),用于存儲(chǔ)一組數(shù)據(jù),預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,如圖3所示,該系統(tǒng)300包括
位數(shù)確定單元310,用于根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值V確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m;第一轉(zhuǎn)換單元320,用于分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù);分割處理單元330,用于將所得到的二進(jìn)制數(shù)順序排列,以8位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,得到若干個(gè)字節(jié);存儲(chǔ)單元340,按照預(yù)定規(guī)則保存所述若干個(gè)字節(jié)。該數(shù)據(jù)存儲(chǔ)系統(tǒng)還包括第二轉(zhuǎn)換單元350,用于將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為彡2的整數(shù);存儲(chǔ)單元340按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。實(shí)施例二本實(shí)施例提供一種數(shù)據(jù)讀取方法,用于讀取按照實(shí)施例一中所述方法存儲(chǔ)的數(shù)據(jù),參照?qǐng)D4,該方法包括S401,讀取按照預(yù)定規(guī)則保存的若干個(gè)數(shù),將每個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),并順序排列;S402,根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m, 以m位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行重新分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù);S403,將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為預(yù)定格式的數(shù)。所述待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng)GIS中的柵格數(shù)據(jù)。具體實(shí)施例中讀柵格數(shù)據(jù)過(guò)程讀柵格文件數(shù)據(jù),目的就是要把按前述方法寫入文件的數(shù)據(jù)(這個(gè)數(shù)據(jù),可能是對(duì)應(yīng)著原始柵格的多個(gè)網(wǎng)格值的合成結(jié)果),解析成柵格的每個(gè)網(wǎng)格里實(shí)際的值。此過(guò)程是上面寫入數(shù)據(jù)過(guò)程的逆過(guò)程。根據(jù)柵格數(shù)據(jù)的最大位數(shù)m,將柵格數(shù)據(jù)按字節(jié)讀出(條件是8),或者按16 位的數(shù)據(jù)類型讀出(條件是m < 16),或者是按32位的數(shù)據(jù)類型讀出(條件是m < 32)或者是按64位的數(shù)據(jù)類型讀出(條件是m<64),假設(shè)讀出的數(shù)據(jù)數(shù)組是A1,A2,A3,…,An 然后將每個(gè)數(shù)據(jù)轉(zhuǎn)為2進(jìn)制表示并連續(xù)的排在一串,再連續(xù)的從第一位開始取m位,轉(zhuǎn)為10 進(jìn)制表示值C,則C為一柵格的網(wǎng)格實(shí)際值,比如土地類型。實(shí)施例三本發(fā)明實(shí)施例提供的是一種數(shù)據(jù)管理方法,包括數(shù)據(jù)存儲(chǔ)根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ;分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù);將所得到的二進(jìn)制數(shù)順序排列,以8位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,得到若干個(gè)字節(jié);按照預(yù)定規(guī)則保存所述若干個(gè)字節(jié);數(shù)據(jù)提取讀取按照預(yù)定規(guī)則保存的若干個(gè)字節(jié);
根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m,以m 位為單位對(duì)所保存的二進(jìn)制數(shù)進(jìn)行分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù);將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。具體應(yīng)用效果圖5為全國(guó)土地利用現(xiàn)狀的地圖。此柵格文件是全國(guó)土地利用現(xiàn)狀柵格,橫向分辨率30米,縱向分辨率30米,柵格象素大小161360*134724 ;柵格數(shù)據(jù)值的最大位數(shù)為m = 5,采用本專利方法得到的柵格文件大小為傳統(tǒng)方法的5/8,可節(jié)省7. 59GB大小存儲(chǔ)空間。綜上所述,本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法,通過(guò)設(shè)計(jì)柵格數(shù)據(jù)結(jié)構(gòu),不拘泥于現(xiàn)有技術(shù)中慣用的采用一字節(jié)8位或者二字節(jié)或者四字節(jié)來(lái)存儲(chǔ)數(shù)據(jù)的方式,而是根據(jù)根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值所需的最少位數(shù)來(lái)確定二進(jìn)制數(shù)位數(shù),緊湊排列存儲(chǔ),避免了空間的浪費(fèi)。 提出最小存儲(chǔ)空間方法,與采用壓縮技術(shù)等減少數(shù)據(jù)量不是一個(gè)層次概念。對(duì)于采用本發(fā)明方法建立的柵格文件,也同樣可以繼續(xù)采用壓縮技術(shù)等方法做進(jìn)一步處理。本發(fā)明提供的方案中,在讀寫柵格文件時(shí),會(huì)進(jìn)行數(shù)據(jù)的位移和位或處理,基于目前的計(jì)算機(jī)處理能力,這些位操作執(zhí)行效率比較高,所以,采用本方法,相比于傳統(tǒng)做法,以損失很小的運(yùn)行效率,但能得到更大存儲(chǔ)空間的節(jié)省,這在一些應(yīng)用中具有重要的使用價(jià)值。以上對(duì)本發(fā)明所提供的柵格數(shù)據(jù)存儲(chǔ)方法及讀取方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)方法,用于存儲(chǔ)一組數(shù)據(jù),其特征在于,預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,該方法包括根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ;分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù);將所得到的有效二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,k為正整數(shù),Sk^m ;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù), L為彡2的整數(shù);按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。
2.如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)方法,所述一組數(shù)據(jù)中有η個(gè)數(shù)據(jù),其特征在于,所述將所得到的二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)字進(jìn)行分割, 具體包括對(duì)w個(gè)數(shù)中第i個(gè)數(shù),取其中對(duì)應(yīng)m位,并進(jìn)行移位和位或操作,得到8k位二進(jìn)制數(shù), 其中 i = 0,1,-,W-I0
3.如權(quán)利要求1所述的方法,其特征在于,在所述對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割后,最后剩余的數(shù)后補(bǔ)上0構(gòu)成8k位,得到一個(gè)8k位數(shù)。。
4.如權(quán)利要求1所述的方法,其特征在于,m= 8,16,32,64),將所述待存儲(chǔ)的一組數(shù)據(jù)直接存儲(chǔ)或者轉(zhuǎn)換成L進(jìn)制數(shù)再保存。
5.如權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,所述待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng)GIS中的柵格數(shù)據(jù)。
6.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),用于存儲(chǔ)一組數(shù)據(jù),其特征在于,預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,該系統(tǒng)包括位數(shù)確定單元,用于根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值V確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ;第一轉(zhuǎn)換單元,用于分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù)字;分割處理單元,用于將所得到的二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)字進(jìn)行分割,得到若干個(gè)數(shù),k為正整數(shù),8k ^ m ;存儲(chǔ)單元,按照預(yù)定規(guī)則保存所述若干個(gè)數(shù)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括第二轉(zhuǎn)換單元,用于將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為彡2的整數(shù);所述存儲(chǔ)單元按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。
8.如權(quán)利要求6或7所述的系統(tǒng),其特征在于,所述待存儲(chǔ)的一組數(shù)據(jù)為地理信息系統(tǒng) GIS中的柵格數(shù)據(jù)。
9.一種數(shù)據(jù)讀取方法,用于讀取如權(quán)利要求1至5中任一項(xiàng)所述的方法存儲(chǔ)的數(shù)據(jù),其特征在于,該方法包括讀取按照預(yù)定規(guī)則保存的若干個(gè)數(shù),將每個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),并順序排列;根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m,以m位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行重新分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù);將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為預(yù)定格式的數(shù)。
10. 一種數(shù)據(jù)管理方法,其特征在于,包括 數(shù)據(jù)存儲(chǔ)根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m ; 分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制表示;將所得到的二進(jìn)制數(shù)順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割, k為正整數(shù),Sk^m ;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為>2 的整數(shù);按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)數(shù); 數(shù)據(jù)提取讀取按照預(yù)定規(guī)則保存的若干個(gè)數(shù),并轉(zhuǎn)換為二進(jìn)制數(shù)字,按順序排列; 根據(jù)預(yù)定的所存儲(chǔ)數(shù)據(jù)的最大值確定的其用二進(jìn)制數(shù)表示時(shí)所需的位數(shù)m,以m位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行重新分割,得到若干個(gè)位數(shù)為m的二進(jìn)制數(shù); 將所述若干個(gè)位數(shù)為m的二進(jìn)制數(shù)轉(zhuǎn)換為預(yù)定格式的數(shù)。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)存儲(chǔ)方法,用于存儲(chǔ)一組數(shù)據(jù),預(yù)先確定待存儲(chǔ)的一組數(shù)據(jù)的取值范圍,該方法包括根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值確定其用二進(jìn)制數(shù)表示時(shí)所需的最少位數(shù)m;分別將待存儲(chǔ)的一組數(shù)據(jù)中各數(shù)據(jù)轉(zhuǎn)換為m位二進(jìn)制數(shù);將所得到的有效二進(jìn)制數(shù)字順序排列,以8k位為單位對(duì)所述順序排列的二進(jìn)制數(shù)進(jìn)行分割,k為正整數(shù),8k≥m;將分割后的每一部分轉(zhuǎn)換成L進(jìn)制表示,得到若干個(gè)L進(jìn)制數(shù),L為≥2的整數(shù);按照預(yù)定規(guī)則保存所述若干個(gè)L進(jìn)制數(shù)。本發(fā)明還提供了相應(yīng)的數(shù)據(jù)讀取方法;以及一種數(shù)據(jù)存儲(chǔ)系統(tǒng),用于存儲(chǔ)一組數(shù)據(jù),該系統(tǒng)包括位數(shù)確定單元,第一轉(zhuǎn)換單元,分割處理單元和存儲(chǔ)單元。本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法,通過(guò)設(shè)計(jì)柵格數(shù)據(jù)結(jié)構(gòu),不拘泥于現(xiàn)有技術(shù)中慣用的采用字節(jié)為單位來(lái)存儲(chǔ)數(shù)據(jù)的方式,而是根據(jù)待存儲(chǔ)數(shù)據(jù)的最大值所需的最少位數(shù)來(lái)確定二進(jìn)制數(shù)位數(shù),緊湊排列存儲(chǔ),避免了空間的浪費(fèi)。
文檔編號(hào)G06F17/30GK102411616SQ20111033612
公開日2012年4月11日 申請(qǐng)日期2011年10月28日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者史明昌, 孫成寶, 曹剛, 李團(tuán)宏, 李嵩 申請(qǐng)人:北京地拓科技發(fā)展有限公司