摘 要:地理信息系統(tǒng)中空間數(shù)據(jù)結(jié)構(gòu)主要有矢量數(shù)據(jù)結(jié)構(gòu)和柵格數(shù)據(jù)結(jié)構(gòu),兩者之間的轉(zhuǎn)換是GIS的關(guān)鍵技術(shù)之一。在GIS的具體應(yīng)用中,不同的分析處理所要求的數(shù)據(jù)格式也不一樣?;诖吮尘?,本文提出了對(duì)矢量線要素柵格化的兩種常用方法:八方向柵格化和全路徑柵格化,并通過java編程實(shí)現(xiàn)了兩者之間的對(duì)比。
關(guān)鍵詞:GIS 柵格化 八方向柵格化 全路徑柵格化
中圖分類號(hào):G71 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)04(a)-0066-01
GIS中空間數(shù)據(jù)結(jié)構(gòu)主要有矢量數(shù)據(jù)結(jié)構(gòu)和柵格數(shù)據(jù)結(jié)構(gòu)兩種,兩者之間的相互轉(zhuǎn)換是GIS的關(guān)鍵技術(shù)之一。矢量數(shù)據(jù)結(jié)構(gòu)是把所有的地理空間實(shí)體都用X、Y坐標(biāo)進(jìn)行表示的一種數(shù)據(jù)結(jié)構(gòu),而柵格數(shù)據(jù)結(jié)構(gòu)則是以規(guī)則的格網(wǎng)陣列來表示地理空間實(shí)體或有連續(xù)分布規(guī)律現(xiàn)象的數(shù)據(jù)組織,兩者都可以用來表達(dá)地理空間實(shí)體的點(diǎn)、線、面三種基本類型。在GIS的具體應(yīng)用中都有其各自的優(yōu)缺點(diǎn),如矢量數(shù)據(jù)能表達(dá)的實(shí)體位置精度更高、輸出的圖形更精確美觀、數(shù)據(jù)冗余度小等,而柵格數(shù)據(jù)結(jié)構(gòu)簡單,相比矢量數(shù)據(jù)更適合于空間分析中的疊置分析和某些自然現(xiàn)象的空間分布規(guī)律的表達(dá)。所以為了在GIS中能合理利用這兩種數(shù)據(jù)結(jié)構(gòu),以便進(jìn)一步對(duì)空間數(shù)據(jù)在不同的應(yīng)用中進(jìn)行分析處理,常常需要實(shí)現(xiàn)矢量數(shù)據(jù)結(jié)構(gòu)與柵格數(shù)據(jù)結(jié)構(gòu)間的相互轉(zhuǎn)換轉(zhuǎn)換。目前,矢量數(shù)據(jù)與柵格數(shù)據(jù)之間的轉(zhuǎn)換已經(jīng)發(fā)展了許多高效的算法,如對(duì)矢量線要素的有八方向柵格化、對(duì)矢量面要素的內(nèi)部點(diǎn)擴(kuò)散算法等。本文主要是提出了矢量線要素柵格化的兩種常用算法:八方向柵格化和全路徑柵格化,在簡要介紹這兩種算法的基礎(chǔ)上,通過java編程試驗(yàn)的方法,對(duì)利用這兩種算法實(shí)現(xiàn)對(duì)矢量線要素柵格化進(jìn)行了實(shí)驗(yàn)測(cè)試和比較。
1 八方向柵格化及其特點(diǎn)
所謂八方向柵格化,是指在根據(jù)矢量線的傾角情況,在每行或每列上,只有一個(gè)像元被”涂黑”(賦予不同背景色的灰度值)。設(shè)有一條線段起始坐標(biāo)分別為(x1,y1),(x2,y2),其算法實(shí)現(xiàn)主要過程如下。
第一步:計(jì)算出線段端點(diǎn)(x1,y1),(x2,y2)所在的行、列號(hào)(I1,J1)及(I2,J2),并將它們”涂黑”。
第二步:計(jì)算出線段兩個(gè)端點(diǎn)所在位置的行差與列差為rowCut、colCut。如果rowCut-colCut>=0,則逐行求出本行中心線與過這兩個(gè)端點(diǎn)的交點(diǎn),并將它們”涂黑”。
y=y中心線
x=(y-y1)b+x1,(其中)
如果列rowCut-colCut<0,則逐列求出本列中心線與過這兩個(gè)端點(diǎn)的直線的交點(diǎn),并將它們”涂黑”。
x=x中心線
y=(x-x1)b’+y1,(其中)
八方向柵格化的特點(diǎn):在保持八方向連通的前提下,柵格影像看起來最細(xì),不同線劃間最不易”粘連”,且容易實(shí)現(xiàn)。
2 全路徑柵格化及其特點(diǎn)
全路徑柵格化是用分帶法進(jìn)行矢量向柵格的轉(zhuǎn)換,即按行計(jì)算起始列號(hào)和終止列號(hào)(或按列計(jì)算起始行號(hào)和終止行號(hào))的方法。設(shè)有一條線段起始坐標(biāo)分別為(x1,y1),(x2,y2),其算法實(shí)現(xiàn)主要過程如下:
第一步:計(jì)算出線段兩個(gè)端點(diǎn)所在位置的行差與列差為rowCut、colCut。(以下以colCut-rowCut>=0為例進(jìn)行計(jì)算)
第二步,計(jì)算線段兩端點(diǎn)傾角a的正切
第三步,計(jì)算起始列號(hào)ja。
第四步,計(jì)算終止列號(hào)je。
第五步,將第i行從ja列開始到j(luò)e列為止的中間所有柵格”涂黑”。
第六步,遍歷線段所穿過的所有行,如果不是終止行,則把je賦給ja;行號(hào)i加1,并轉(zhuǎn)第四步,否則結(jié)束。
全路徑柵格化的特點(diǎn):柵格化后的線要素較八方向柵格化飽滿,適合于要向任何方向進(jìn)行探測(cè)的柵格影像或想知道矢量覆蓋的范圍,計(jì)算較復(fù)雜。
3 兩種方法對(duì)矢量線要素柵格化的實(shí)現(xiàn)與對(duì)比
從前面的分析可以看出,不管采取八方向柵格化還是全路徑柵格化,都可以實(shí)現(xiàn)對(duì)矢量線要素的柵格化。為了能使測(cè)試結(jié)果有對(duì)比性,本文主要是利用了java編程語言創(chuàng)建了八方向柵格化和全路徑柵格化的程序,并在同一個(gè)窗體上對(duì)這兩種算法對(duì)矢量線要素柵格化進(jìn)行了顯示。如圖1,通過線段的平移,以保證兩線段的性質(zhì)都是一樣的,該程序的實(shí)現(xiàn)是以當(dāng)行差大于列差進(jìn)行測(cè)試的。
4 結(jié)語
通過上述編程試驗(yàn)測(cè)試表明,八方向柵格化和全路徑柵格化方法都能實(shí)現(xiàn)對(duì)線要素柵格化的目的。但八方柵格化方法柵格化后的線要素比較精細(xì),數(shù)據(jù)量較?。欢窂綎鸥窕鸥窕蟮木€要素比較飽滿,但計(jì)算較八方向柵格化法復(fù)雜。
參考文獻(xiàn)
[1]蘭小機(jī),劉德兒.地理信息系統(tǒng)(Version 2)[M].江西理工大學(xué).
[2]張宏,溫永寧,劉愛利,等.地理信息系統(tǒng)算法基礎(chǔ)[M].科學(xué)出版社,2006,6.
[3]李璐.一種矢量數(shù)據(jù)柵格化的方法及其應(yīng)用[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2009,10.
[4]白燕,廖順寶.矢量數(shù)據(jù)屬性信息無損柵格化的實(shí)現(xiàn)方法[J].地理信息科學(xué)學(xué)報(bào),2010,6.
[5]王建,杜道生.矢量數(shù)據(jù)向柵格數(shù)據(jù)轉(zhuǎn)換的一種改進(jìn)算法[J].地理與地理信息科學(xué),2004,20(1):31-34.