一種壓縮矢量數(shù)據(jù)的方法
【專利摘要】本發(fā)明涉及數(shù)據(jù)壓縮【技術(shù)領(lǐng)域】,本發(fā)明公開了一種壓縮矢量數(shù)據(jù)的方法,其具體包括以下的步驟:步驟一,將原始的矢量數(shù)據(jù)分組,找出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量,其他的矢量數(shù)據(jù)與這個(gè)標(biāo)準(zhǔn)矢量進(jìn)行比較,得到每一個(gè)矢量數(shù)據(jù)相對(duì)于標(biāo)準(zhǔn)矢量的偏移量;步驟二,將原始的矢量數(shù)據(jù)變成標(biāo)準(zhǔn)矢量加偏移量的方式進(jìn)行保存。通過上述將原始矢量數(shù)據(jù)轉(zhuǎn)為標(biāo)準(zhǔn)矢量加偏移量的方式,偏移量可以只用1個(gè)字節(jié)表示,從而將一個(gè)占用8個(gè)字節(jié)的雙精度數(shù)字的存儲(chǔ)空間降低到1個(gè)字節(jié),一個(gè)小空間對(duì)象的所有橫坐標(biāo)(或縱坐標(biāo))都可以用一個(gè)相同的標(biāo)準(zhǔn)矢量加上一個(gè)偏移量來表示,數(shù)據(jù)壓縮率可達(dá)到10%到20%之間。同時(shí),這樣的數(shù)據(jù)壓縮方式?jīng)]有改變空間數(shù)據(jù)節(jié)點(diǎn)數(shù)量,還原后沒有精度損失。
【專利說明】一種壓縮矢量數(shù)據(jù)的方法【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)壓縮【技術(shù)領(lǐng)域】,尤其涉及一種壓縮矢量數(shù)據(jù)的方法。
【背景技術(shù)】[0002]地理信息系統(tǒng)(Geographic Information System,簡稱GIS )作為獲取、處理、管理和分析地理空間數(shù)據(jù)的重要工具、技術(shù)和學(xué)科,近年來得到了廣泛關(guān)注和迅猛發(fā)展。基于空間地理信息的野外數(shù)據(jù)采集行為在國土、農(nóng)林牧等行業(yè)中作為常規(guī)業(yè)務(wù)一直存在,長期以來,由于受到移動(dòng)設(shè)備處理能力的限制不能存儲(chǔ)和處理大量空間地理信息數(shù)據(jù),信息化技術(shù)不能很好地對(duì)基于地理信息的野外數(shù)據(jù)采集方式提供有力的支持。
[0003]空間數(shù)據(jù)壓縮是地理信息系統(tǒng)GIS、計(jì)算機(jī)自動(dòng)制圖、計(jì)算機(jī)圖形學(xué)等學(xué)科中的一個(gè)常見問題,GIS中的空間數(shù)據(jù)包括矢量數(shù)據(jù)和柵格數(shù)據(jù),矢量數(shù)據(jù)又分為點(diǎn)狀圖形要素、線狀圖形要素和面狀圖形要素,從壓縮的角度來看,矢量圖形的壓縮主要是線狀圖形要素的壓縮,因?yàn)辄c(diǎn)狀圖形要素可以看作特殊的線狀要素,面狀圖形要素的基礎(chǔ)也是線狀圖形要素,需要由一條或多條線狀要素圍成。因此,線狀圖形要素的壓縮就成為矢量數(shù)據(jù)壓縮中最重要的問題。以林業(yè)中森林資源二類調(diào)查區(qū)劃矢量數(shù)據(jù)為例,森林資源二類調(diào)查區(qū)劃數(shù)據(jù)包含縣、鄉(xiāng)鎮(zhèn)(林場(chǎng))、村(作業(yè)區(qū))、組(林班)、小班,縣空間對(duì)象的面積最大但數(shù)據(jù)存儲(chǔ)量最小(只有一條數(shù)據(jù),容量約為幾百K),單個(gè)小班空間對(duì)象的面積最小但全縣所有小班的總數(shù)據(jù)存儲(chǔ)量最大(數(shù)萬個(gè)小班,容量可以達(dá)到幾百兆)。
[0004]目前,針對(duì)空間矢量圖形壓縮算法,許多學(xué)者做出了大量深入研究,提出了許多幾何算法,如垂距限值法、角度限值法、光柵法、Douglas-Peucker算法(Splitting算法)等;也有學(xué)者提出用一些優(yōu)化算法來解決優(yōu)化壓縮問題,如動(dòng)態(tài)規(guī)劃算法、圖論法、遺傳算法、禁忌搜索算法等。但是,這些算法大多是采用減少空間數(shù)據(jù)節(jié)點(diǎn)數(shù)量的辦法來實(shí)現(xiàn),因此,壓縮后的數(shù)據(jù)有一定的精度損失并且不可還原。
【發(fā)明內(nèi)容】
[0005]針對(duì)現(xiàn)有技術(shù)中的矢量數(shù)據(jù)壓縮方法存在精度損失且不可還原的技術(shù)問題,本發(fā)明公開了一種壓縮矢量數(shù)據(jù)的方法。
[0006]本發(fā)明公開了一種壓縮矢量數(shù)據(jù)的方法,其具體包括以下的步驟:步驟一,將原始的矢量數(shù)據(jù)分組,找出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量,其他的矢量數(shù)據(jù)與這個(gè)標(biāo)準(zhǔn)矢量進(jìn)行比較,得到每一個(gè)矢量數(shù)據(jù)相對(duì)于標(biāo)準(zhǔn)矢量的偏移量;步驟二,將原始的矢量數(shù)據(jù)變成標(biāo)準(zhǔn)矢量加偏移量的方式進(jìn)行保存。通過壓縮,縮小了數(shù)據(jù)的存儲(chǔ)空間。
[0007]更進(jìn)一步地,上述方法還包括將原始的矢量數(shù)據(jù)進(jìn)行整形化,其具體為:根據(jù)原始的矢量數(shù)據(jù)的特點(diǎn)確定原始的矢量數(shù)據(jù)的放大比例,從而將原始的矢量數(shù)據(jù)轉(zhuǎn)為整數(shù)的坐標(biāo)序列。
[0008]更進(jìn)一步地,上述方法還包括判斷每組中最大的矢量數(shù)據(jù)與最小的矢量數(shù)據(jù)值之間的差值,當(dāng)差值小于或者等于設(shè)定的閾值時(shí),繼續(xù)計(jì)算偏移量,當(dāng)差值大于設(shè)定的閾值時(shí),將這組矢量數(shù)據(jù)繼續(xù)分為兩組或者多組新的矢量數(shù)據(jù)并依照重新分組后的矢量數(shù)據(jù)確定標(biāo)準(zhǔn)矢量和偏移量。
[0009]更進(jìn)一步地,上述標(biāo)準(zhǔn)矢量為將這一組中最大或者最小的矢量數(shù)據(jù)作為這一組矢量數(shù)據(jù)的標(biāo)準(zhǔn)矢量。
[0010]更進(jìn)一步地,上述方法還包括壓縮數(shù)據(jù)的解壓縮方法,其具體為:讀出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量和偏移量,根據(jù)標(biāo)準(zhǔn)矢量和偏移量計(jì)算出原始的矢量數(shù)據(jù)。
[0011]更進(jìn)一步地,上述方法還包括將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù),其具體為:根據(jù)放大比例將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù)。
[0012]通過采用以上的技術(shù)方案,本發(fā)明的有益效果為:通過上述將原始矢量數(shù)據(jù)轉(zhuǎn)為標(biāo)準(zhǔn)矢量加偏移量的方式,偏移量只用I個(gè)字節(jié)表示,從而將一個(gè)占用8個(gè)字節(jié)的雙精度數(shù)字諸如412616的存儲(chǔ)空間降低到I個(gè)字節(jié),一個(gè)小空間對(duì)象的所有橫坐標(biāo)(或縱坐標(biāo))都可以用一個(gè)相同的標(biāo)準(zhǔn)矢量加上一個(gè)偏移量來表示,數(shù)據(jù)壓縮率可達(dá)到10%到20%之間。同時(shí),這樣的數(shù)據(jù)壓縮方式?jīng)]有改變空間數(shù)據(jù)節(jié)點(diǎn)數(shù)量,還原后沒有精度損失。
【專利附圖】
【附圖說明】
[0013]圖1為本發(fā)明的壓縮矢量數(shù)據(jù)的方法的完整的流程圖。
[0014]圖2為本發(fā)明的解壓縮矢量數(shù)據(jù)的方法的完整的流程圖。
【具體實(shí)施方式】
[0015]下面結(jié)合說明書附圖,詳細(xì)說明本發(fā)明的【具體實(shí)施方式】。
[0016]本發(fā)明公開了一種壓縮矢量數(shù)據(jù)的方法,其具體包括以下的步驟:步驟一,將原始的矢量數(shù)據(jù)分組,找出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量,比如以最大或者最小的矢量數(shù)據(jù)作為這一組矢量數(shù)據(jù)的標(biāo)準(zhǔn)矢量,其他的矢量數(shù)據(jù)與這個(gè)標(biāo)準(zhǔn)矢量進(jìn)行比較,得到每一個(gè)矢量數(shù)據(jù)相對(duì)于標(biāo)準(zhǔn)矢量的偏移量;步驟二,將原始的矢量數(shù)據(jù)變成標(biāo)準(zhǔn)矢量加偏移量的方式進(jìn)行保存。比如,原始的矢量數(shù)據(jù)包括橫坐標(biāo)和縱坐標(biāo),將橫坐標(biāo)分為一組,縱坐標(biāo)分為一組,以下面這組橫坐標(biāo)為例:(412616,412613,412612,412608,412606,412604,412602,
412597,412595,412593,412591,412589,412588),其最大值為 412616,最小值為 412588,將最小值[412588]做為這一組矢量數(shù)據(jù)的標(biāo)準(zhǔn)矢量,經(jīng)過上述壓縮方法后的數(shù)據(jù)形式為標(biāo)準(zhǔn)矢量加偏移量的方式,即:[412588] (28,25,24,20,18,16,14,9,7,5,3,1,O)。通過上述將原始矢量數(shù)據(jù)轉(zhuǎn)為標(biāo)準(zhǔn)矢量加偏移量的方式,偏移量只用I個(gè)字節(jié)表示,從而將一個(gè)占用8個(gè)字節(jié)的雙精度數(shù)字諸如412616的存儲(chǔ)空間降低到I個(gè)字節(jié),一個(gè)小空間對(duì)象的所有橫坐標(biāo)(或縱坐標(biāo))都可以用一個(gè)相同的標(biāo)準(zhǔn)矢量加上一個(gè)偏移量來表示,數(shù)據(jù)壓縮率可達(dá)到10%到20%之間。同時(shí),這樣的數(shù)據(jù)壓縮方式?jīng)]有改變空間數(shù)據(jù)節(jié)點(diǎn)數(shù)量,還原后沒有精度損失。
[0017]更進(jìn)一步地,上述方法還包括將原始的矢量數(shù)據(jù)進(jìn)行整形化,其具體為:根據(jù)原始的矢量數(shù)據(jù)的特點(diǎn)確定原始的矢量數(shù)據(jù)的放大比例,從而將原始的矢量數(shù)據(jù)轉(zhuǎn)為整數(shù)的坐標(biāo)序列。原始的矢量數(shù)據(jù)很有可能不是整數(shù),比如(412616.5,412613,412612.5),將原始的矢量數(shù)據(jù)變?yōu)檎麛?shù)坐標(biāo)后便于計(jì)算,其放大比例scale根據(jù)原始的矢量數(shù)據(jù)的特點(diǎn)確定,以這組數(shù)據(jù)(412616.5,412613,412612.5)為例,放大比例scale為2即可實(shí)現(xiàn)整形化。[0018]更進(jìn)一步地,上述方法還包括判斷每組中最大的矢量數(shù)據(jù)與最小的矢量數(shù)據(jù)值之間的差值,當(dāng)差值小于或者等于設(shè)定的閾值時(shí),繼續(xù)計(jì)算偏移量,當(dāng)差值大于設(shè)定的閾值時(shí),將這組矢量數(shù)據(jù)繼續(xù)分為兩組或者多組新的矢量數(shù)據(jù)并依照重新分組后的矢量數(shù)據(jù)確定標(biāo)準(zhǔn)矢量和偏移量。繼續(xù)這一組的橫坐標(biāo)數(shù)據(jù)(412616,412613,412612,412608,412606,
412604,412602,412597,412595,412593,412591,412589,412588)為例,其最大值 412616和最小值412588之差等于28,小于設(shè)定的閾值256,變化量可以用I個(gè)字節(jié)表示,經(jīng)過壓縮后的數(shù)據(jù)形式為[412588] (28,25,24,20,18,16,14,9,7,5,3,1,0)。當(dāng)這一組數(shù)據(jù)的橫坐標(biāo)數(shù)據(jù)較多,其最大值和最小值之間的差大于設(shè)定的閾值256時(shí),可以將這組矢量數(shù)據(jù)再細(xì)分為新的小組,最終使得差值小于設(shè)定的閾值,從而保證變化量只用一個(gè)字節(jié)表示,采用這樣的方式進(jìn)一步保證了數(shù)據(jù)壓縮的效果。
[0019]圖1為本發(fā)明的壓縮矢量數(shù)據(jù)的方法的完整的流程圖,其先將原始的矢量數(shù)據(jù)坐標(biāo)讀取后,將原始的矢量數(shù)據(jù)整形化,然后找出X坐標(biāo)和Y坐標(biāo)的最大值和最小值,并分別計(jì)算X坐標(biāo)和Y坐標(biāo)的最大值和最小值之間的差值,并根據(jù)差值判斷存儲(chǔ)偏移量的字節(jié)數(shù),然后將原始的矢量數(shù)據(jù)變?yōu)樽钚≈导悠屏康姆绞竭M(jìn)行保存。
[0020]更進(jìn)一步地,上述方法還包括壓縮數(shù)據(jù)的解壓縮方法,其具體為:讀出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量和偏移量,根據(jù)標(biāo)準(zhǔn)矢量和偏移量計(jì)算出原始的矢量數(shù)據(jù)。通過上述方法實(shí)現(xiàn)了壓縮數(shù)據(jù)的解壓縮,其解壓縮后的矢量沒有精度損失。圖2為本發(fā)明的解壓縮矢量數(shù)據(jù)的方法的完整的流程圖。
[0021]更進(jìn)一步地,上述方法還包括將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù),其具體為:根據(jù)放大比例將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù)。
[0022]本發(fā)明的實(shí)驗(yàn)步驟如下,第一步:輸入空間矢量數(shù)據(jù)src.shp文件;第二步:輸出壓縮目標(biāo)文件dst.db文件;第三步:比較原始文件和目標(biāo)文件的大小,得出壓縮率;第四步:解碼目標(biāo)文件,輸出src 1.shp文件;第五步:比較src.shp和src 1.shp文件,驗(yàn)證解碼成功。
[0023]上述的實(shí)施例中所給出的系數(shù)和參數(shù),是提供給本領(lǐng)域的技術(shù)人員來實(shí)現(xiàn)或使用發(fā)明的,發(fā)明并不限定僅取前述公開的數(shù)值,在不脫離發(fā)明的思想的情況下,本領(lǐng)域的技術(shù)人員可以對(duì)上述實(shí)施例作出種種修改或調(diào)整,因而發(fā)明的保護(hù)范圍并不被上述實(shí)施例所限,而應(yīng)該是符合權(quán)利要求書提到的創(chuàng)新性特征的最大范圍。
【權(quán)利要求】
1.一種壓縮矢量數(shù)據(jù)的方法,其具體包括以下的步驟:步驟一,將原始的矢量數(shù)據(jù)分組,找出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量,其他的矢量數(shù)據(jù)與這個(gè)標(biāo)準(zhǔn)矢量進(jìn)行比較,得到每一個(gè)矢量數(shù)據(jù)相對(duì)于標(biāo)準(zhǔn)矢量的偏移量;步驟二,將原始的矢量數(shù)據(jù)變成標(biāo)準(zhǔn)矢量加偏移量的方式進(jìn)行保存。
2.如權(quán)利要求1所述的壓縮矢量數(shù)據(jù)的方法,其特征在于所述方法還包括將原始的矢量數(shù)據(jù)進(jìn)行整形化,其具體為:根據(jù)原始的矢量數(shù)據(jù)的特點(diǎn)確定原始的矢量數(shù)據(jù)的放大比例,從而將原始的矢量數(shù)據(jù)轉(zhuǎn)為整數(shù)的坐標(biāo)序列。
3.如權(quán)利要求1或者2所述的壓縮矢量數(shù)據(jù)的方法,其特征在于所述方法還包括判斷每組中最大的矢量數(shù)據(jù)與最小的矢量數(shù)據(jù)值之間的差值,當(dāng)差值小于或者等于設(shè)定的閾值時(shí),繼續(xù)計(jì)算偏移量,當(dāng)差值大于設(shè)定的閾值時(shí),將這組矢量數(shù)據(jù)繼續(xù)分為兩組或者多組新的矢量數(shù)據(jù)并依照重新分組后的矢量數(shù)據(jù)確定標(biāo)準(zhǔn)矢量和偏移量。
4.如權(quán)利要求1或者2所述的壓縮矢量數(shù)據(jù)的方法,其特征在于所述標(biāo)準(zhǔn)矢量為將這一組中最大或者最小的矢量數(shù)據(jù)作為這一組矢量數(shù)據(jù)的標(biāo)準(zhǔn)矢量。
5.如權(quán)利要求1或者2所述的壓縮矢量數(shù)據(jù)的方法,其特征在于所述方法還包括壓縮數(shù)據(jù)的解壓縮方法,其具體為:讀出每組矢量數(shù)據(jù)中的標(biāo)準(zhǔn)矢量和偏移量,根據(jù)標(biāo)準(zhǔn)矢量和偏移量計(jì)算出原始的矢量數(shù)據(jù)。
6.如權(quán)利要求5所述的壓縮矢量數(shù)據(jù)的方法,其特征在于所述方法還包括將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù),其具體為:根據(jù)放大比例將整形化后的矢量數(shù)據(jù)還原為原始的矢量數(shù)據(jù)。
【文檔編號(hào)】H03M7/30GK103746705SQ201410024316
【公開日】2014年4月23日 申請(qǐng)日期:2014年1月20日 優(yōu)先權(quán)日:2014年1月20日
【發(fā)明者】顏學(xué)銘 申請(qǐng)人:成都樂創(chuàng)信息科技有限公司