GIS教程-矢量和柵格互相轉(zhuǎn)化_第1頁(yè)
GIS教程-矢量和柵格互相轉(zhuǎn)化_第2頁(yè)
GIS教程-矢量和柵格互相轉(zhuǎn)化_第3頁(yè)
GIS教程-矢量和柵格互相轉(zhuǎn)化_第4頁(yè)
GIS教程-矢量和柵格互相轉(zhuǎn)化_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 GIS教程/空間數(shù)據(jù)的轉(zhuǎn)換/第十一節(jié)返回首頁(yè)柵格向矢量的轉(zhuǎn)換 352 柵格向矢量的轉(zhuǎn)換 把柵格單元中的空間信息轉(zhuǎn)換為幾何圖形的過(guò)程叫矢量化。矢量化的過(guò)程要保證以下兩點(diǎn):(1) 拓?fù)滢D(zhuǎn)換,即保持柵格表示出的連通性和鄰接性。否那么,轉(zhuǎn)換出的圖形是雜亂無(wú)章的,沒(méi)有任何實(shí)用價(jià)值的;(2) 轉(zhuǎn)換空間對(duì)象正確的外形。柵格向矢量轉(zhuǎn)換的主要步驟為:(1) 二值化:一般情況下,柵格數(shù)據(jù)是按0255的不同灰度值表達(dá)的。為了簡(jiǎn)化追蹤算法,需把256個(gè)灰階壓縮為2個(gè)灰階,即0和1兩級(jí)。為此,假設(shè)任一格網(wǎng)的灰度值為 ,閥值為 ,那么,根據(jù)下式就可以得到二值圖。(2) 細(xì)化:細(xì)化是消除線劃?rùn)M斷面柵格數(shù)的差異,

2、使得每一條線 只保存代表其軸線或周圍輪廓線對(duì)多邊形而言位置的單個(gè)柵格的寬度。對(duì)于柵格線劃的細(xì)化方法,一般采用"剝皮法"。剝皮法的實(shí)質(zhì)是剝掉等于一個(gè)柵格寬的一層,直到最后留下彼此連通的由單個(gè)柵格點(diǎn)組成的圖形。(3) 跟蹤:跟蹤的目的是把細(xì)化后的柵格數(shù)據(jù)整理為從結(jié)點(diǎn)出發(fā)的線段或閉合的線條,并以矢量形式加以存儲(chǔ)。跟蹤時(shí),根據(jù)人為規(guī)定的搜索方向如沿圖幅邊界的順時(shí)針或逆時(shí)針?lè)较颍瑥钠鹗键c(diǎn)開(kāi)始,在保證趨勢(shì)的情況下對(duì)八個(gè)鄰域進(jìn)行搜索,依次得到相鄰點(diǎn),最終得到完整的弧段或多邊形。(4) 去除多余點(diǎn)及曲線光滑:由于搜索是逐個(gè)柵格進(jìn)行的,所以, 弧段或多邊形的數(shù)據(jù)列十分密集。為了減少存儲(chǔ)量,在

3、保證線段精度的情況下可以刪除局部數(shù)據(jù)點(diǎn)。可以采用如下算法刪除多余點(diǎn):圖3-41,計(jì)算當(dāng)前點(diǎn)A與相鄰點(diǎn)B、C組成的線段BA、AC的夾角 ,如果 大于某一固定值如175度,就刪除B點(diǎn)。當(dāng)然,如果刪除B點(diǎn)后,AC距離太長(zhǎng),那么,刪除B點(diǎn)是不適宜的。(5) 拓?fù)潢P(guān)系的生成:判斷弧段與多邊形間的空間關(guān)系,以形成完整的拓?fù)浣Y(jié)構(gòu)并建立與屬性數(shù)據(jù)的關(guān)系。圖3-41 刪除多余點(diǎn)示意圖   GIS教程/空間數(shù)據(jù)的轉(zhuǎn)換/第十二節(jié)返回首頁(yè)曲線的光滑35 曲線的光滑這里我們主要介紹張力樣條函數(shù)。主要原理如下:在GIS系統(tǒng)中,相當(dāng)多的線劃圖形實(shí)體都是光滑的曲線如等值線,等高線,剖面線等。所以

4、,正確地選擇滿足應(yīng)用要求的曲線光滑算法具有十分重要的意義。在現(xiàn)有的商業(yè)化GIS或CAD系統(tǒng)中,用于曲線光滑的算法主要有如下幾種:線形迭代法;Bezier函數(shù)法;五點(diǎn)光滑法;三次樣條函數(shù)法等。通過(guò)對(duì)相關(guān)算法數(shù)學(xué)原理的分析研究可知,前兩種方法擬合的光滑曲線并不通過(guò)的結(jié)點(diǎn)圖3- 圖3-35 曲線光滑示意圖35(a)中的A、B、C。顯然,對(duì)于許多應(yīng)用這是不允許的;后兩種方法擬合的光滑曲線在大多數(shù)情況下滿足實(shí)際需求,但如果變量在空間的分布變化較大,那么可能造成相鄰曲線的相交圖3-35(b)中的L1、L2。在實(shí)際應(yīng)用中,我們認(rèn)為,如果曲線的光滑算法滿足以下兩個(gè)條件,即既可以形成光滑的曲線,也可以形成分段的

5、線性函數(shù),那么此種算法將是十分優(yōu)越的,這樣,既可以保證曲線的光滑,又可自動(dòng)地盡量防止曲線的相交。通過(guò)研究發(fā)現(xiàn),張力樣條函數(shù)滿足以上條件。1. 張力樣條函數(shù)光滑曲線的數(shù)學(xué)原理張力樣條函數(shù)是Schweikert為消除三次樣條插值函數(shù)有時(shí)會(huì)出現(xiàn)多余的拐點(diǎn)而引入的。其根本構(gòu)思是分段插值函數(shù)為直線插值和兩個(gè)雙曲函數(shù) 和 的線性組合:(3-16)在3-16式中, 為張力系數(shù)。3-16式整體具有連續(xù)二階導(dǎo)數(shù), 的作用是控制拐點(diǎn)的位置和曲線的形態(tài)。 通過(guò)有關(guān)復(fù)雜的數(shù)學(xué)推導(dǎo),可以得到張力樣條函數(shù)的函數(shù)表達(dá)式:3-172. 張力樣條函數(shù)的特點(diǎn) (1)如果 ,那么3-18上式為一標(biāo)準(zhǔn)的三次樣條函數(shù)表達(dá)式。三次樣條函

6、數(shù)可以保證曲線既光滑,又通過(guò)數(shù)據(jù)點(diǎn)。(2)當(dāng) 時(shí)3-17此時(shí)張力樣條函數(shù)退化為分段線性函數(shù)。分段線性函數(shù)可以絕對(duì)保證線段不相交。 從張力樣條函數(shù)優(yōu)良的數(shù)學(xué)特性可以看出,對(duì)某一地質(zhì)變量分布區(qū)域,只要選擇適宜的張力系數(shù) ,就可以盡量防止符合要求的光滑曲線相交。圖3-36 張力樣條函數(shù)光滑曲線示意圖13. 確定張力系數(shù)的算法研究適宜的張力系數(shù) 可以防止相鄰光滑曲線的相交。根據(jù)研究,在不考慮相鄰線段相交而且得到光滑曲線的前提下,任一光滑曲線的 的計(jì)算方法都是一樣的,既如3-18式所示。3-183-18式中, 分別為線段的原始數(shù)據(jù)點(diǎn)數(shù)和累計(jì)長(zhǎng)度。為了使張力樣條函數(shù)適應(yīng)不同復(fù)雜程度地質(zhì)變量曲線的擬合和光滑

7、的要求,本文在經(jīng)過(guò)大量實(shí)驗(yàn)的根底上提出了逐點(diǎn)計(jì)算 的算法。算法的主要步驟如下:(1)通過(guò)3-18式計(jì)算任一曲線的根本張力樣條函數(shù) ,并賦予任一原始數(shù)據(jù)點(diǎn)的屬性為0;(2)判斷相鄰線段是否相交,如果相交,記錄下相交線段的首尾點(diǎn)編號(hào),這些點(diǎn)的屬性值為1;(3)逐點(diǎn)賦予張力樣條函數(shù)值,相應(yīng)的規(guī)那么如下:屬性值為0的數(shù)據(jù)點(diǎn)的張力系數(shù)值為 ,屬性值為1的張力系數(shù)值為7.0。圖3-36、圖3-37是利用上述算法處理的兩幅圖形。雖然與這兩幅圖形相應(yīng)的空間變量前者簡(jiǎn)單,后者復(fù)雜,但它們都滿足實(shí)際需求。圖3-37 張力樣條函數(shù)光滑曲線示意圖2/* - 張力樣條函數(shù)擬合曲線-*/#include <stdl

8、ib.h>/頭文件#include <stdio.h>#include <math.h>#include <malloc.h>#include <string.h>#include <conio.h>extern double map_xmi,map_xma;/圖形區(qū)域x的最大最小值extern int id_cur;extern long map_scale;/圖形的比例尺/計(jì)算由兩點(diǎn)構(gòu)成線的角度extern double angle(double x1,double y1,double x0,double y0); /n:曲

9、線的原始數(shù)據(jù)點(diǎn)數(shù)/id:是否重新計(jì)算擬合曲線的參數(shù) /x,y,z:曲線的三維坐標(biāo)int splin(int n,int id,double *x,double *y,double *z)double *xx,*yy,*zz;double *xp,*yp,*s,*a,*b,*c,*hp;double dtx1,dtx2,ds1,dty1,dty2,six1,siy1,sixn,siyn;double dx1,dy1,ds2,dx2,dy2,sma,ds,dlt;double d1,d2,d3,q,ss,e1,e2,e3,x1,y1,alf,zk;int i,i1,k,k1,n1,j,p_numb

10、er,mao; if(n<=2) return n; mao=n;dlt=(map_xma-map_xmi)/600.0;if(dlt<0.001) dlt=1.0;xx=(double *)malloc(n+2)*sizeof(double);if(xx=NULL) exit(1);yy=(double *)malloc(n+2)*sizeof(double);if(yy=NULL) exit(1);zz=(double *)malloc(n+2)*sizeof(double);if(zz=NULL) exit(1);xp=(double *)malloc(n+2)*sizeof

11、(double);if(xp=NULL) exit(1);yp=(double *)malloc(n+2)*sizeof(double);if(yp=NULL) exit(1);s=(double *)malloc(n+2)*sizeof(double);if(s=NULL) exit(1);a=(double *)malloc(n+2)*sizeof(double);if(a=NULL) exit(1);b=(double *)malloc(n+2)*sizeof(double);if(b=NULL) exit(1);c=(double *)malloc(n+2)*sizeof(double

12、);if(c=NULL) exit(1);hp=(double *)malloc(n+2)*sizeof(double);if(hp=NULL) exit(1);memcpy(xx,x,(n+2)*8);memcpy(yy,y,(n+2)*8);n-;n1=n-1;if(id=0)alf=angle(xx1,yy1,xx0,yy0);alf=alf*3.14159/180.0;*z=alf;else alf=*z;dtx1=xx1-xx0;dty1=yy1-yy0;ds1=hypot(dtx1,dty1);six1=cos(alf);siy1=sin(alf);if(xx0=xxn)&

13、&(yy0=yyn)sixn=six1;siyn=siy1;*(z+n)=alf;elseif(id=0)alf=angle(xxn,yyn,xxn1,yyn1);alf=alf*3.14159/180.0;*(z+n)=alf;else alf=*(z+n);sixn=cos(alf);siyn=sin(alf);dx1=six1;dy1=siy1;xp0=dx1-six1;yp0=dy1-siy1;hp0=ds1;s0=0.0;s1=ds1;d3=ds1;for(i=1;i<=n1;i+)dtx2=xxi+1-xxi;dty2=yyi+1-yyi;ds2=hypot(dtx2

14、,dty2);if(id2=0)|(*(z+i)<0.0)alf=angle(xxi+1,yyi+1,xxi,yyi);alf=alf*3.14159/180.0;*(z+i)=alf;else alf=*(z+i);dx2=cos(alf);dy2=sin(alf);xpi=dx2-dx1;ypi=dy2-dy1;hpi=ds2;dx1=dx2;dy1=dy2;i1=i+1;si1=si+ds2;d3=d3+ds2; d3=d3*(1000.0/map_scale);if(d3<200.0) dlt=1.5*(map_scale/1000.0);if(d3<100.0) d

15、lt=0.75*(map_scale/1000.0);if(d3<20.0) dlt=0.4*(map_scale/1000.0);if(d3<10.0) dlt=0.15*(map_scale/1000.0);if(d3<5.0) dlt=0.1*(map_scale/1000.0);xpn=sixn-dx1;ypn=siyn-dy1;sma=1.5*n/sn;ds=sma*hp0;d1=sma*(exp(ds)+exp(-ds)/2)/sinh(ds)-1/hp0;b0=d1;c0=1/hp0-sma/sinh(ds);a0=c0;for(i=1;i<=n1;i+)

16、ds=sma*hpi;ci=1/hpi-sma/sinh(ds);ai=ci-1;d2=sma*(exp(ds)+exp(-ds)/2)/sinh(ds)-1/hpi;bi=d1+d2;d1=d2;bn=d1;xp0=xp0/b0;yp0=yp0/b0;q=b0;for(k=0;k<=n1;k+)bk=ck/q;q=bk+1-ak*bk;k1=k+1;xpk1=(xpk1-ak*xpk)/q;ypk1=(ypk1-ak*ypk)/q;for(i=0;i<=n1;i+)k=n-i-1;xpk=xpk-bk*xpk+1;ypk=ypk-bk*ypk+1;memcpy(zz,z,(mao

17、+2)*8);x0=xx0;y0=yy0;z0=zz0;p_number=1;for(i=0;i<=n1;i+)zk=(int)hpi;k=(int)(zk/dlt); for(j=1;j<k;j+)ss=si+j*dlt;e1=sma*(si+1-ss);e2=sma*(ss-si);e3=sma*hpi;x1=(xpi*sinh(e1)+xpi+1*sinh(e2)/sinh(e3)+(xxi-xpi)*(si+1-ss)/hpi+(xxi+1-xpi+1)*(ss-si)/hpi;y1=(ypi*sinh(e1)+ypi+1*sinh(e2)/sinh(e3)+(yyi-yp

18、i)*(si+1-ss)/hpi+(yyi+1-ypi+1)*(ss-si)/hpi;xp_number=x1;yp_number=y1;zp_number=-1;p_number=p_number+1; xp_number=xxi+1;yp_number=yyi+1;zp_number=zzi+1;p_number=p_number+1; free(xp);free(yp);free(hp);free(s);free(a);free(b);free(c);free(xx);free(yy);free(zz);return(p_number);   GIS教程/空

19、間數(shù)據(jù)的轉(zhuǎn)換/第十三節(jié)返回首頁(yè)不同圖象、圖形格式數(shù)據(jù)的轉(zhuǎn)換 36 不同圖象、圖形格式數(shù)據(jù)的轉(zhuǎn)換 361 不同圖象格式間的轉(zhuǎn)換常見(jiàn)的圖象格式有BMP、GIF(Graphics Interchange Format)、TIFF標(biāo)記圖象文件格式,Tagged Image File Format等。由于同一種類型圖象格式在世界范圍內(nèi)是完全統(tǒng)一的,所以,它們?cè)诓煌腉IS系統(tǒng)間的數(shù)據(jù)交流應(yīng)該不成問(wèn)題。這里所講的數(shù)據(jù)轉(zhuǎn)換是指不同格式圖象數(shù)據(jù)間的轉(zhuǎn)換。每一種圖象文件的格式都具有本身的特點(diǎn)和規(guī)定,只要知道了這些規(guī)定,就可以方便地完成數(shù)據(jù)間的轉(zhuǎn)換。實(shí)際上,BMP等圖象文件的格式是的。362 不同GIS矢量結(jié)構(gòu)數(shù)

20、據(jù)的轉(zhuǎn)換不管是GIS的通用開(kāi)發(fā)平臺(tái),還是專業(yè)應(yīng)用系統(tǒng),相應(yīng)的數(shù)據(jù)庫(kù)圖形或?qū)傩晕募Y(jié)構(gòu)和圖形實(shí)體的數(shù)據(jù)結(jié)構(gòu)都具有或多或少的差異,特別是專業(yè)系統(tǒng)更是如此。為了實(shí)現(xiàn)數(shù)據(jù)的共享,就必須實(shí)現(xiàn)系統(tǒng)間的數(shù)據(jù)轉(zhuǎn)換。一般情況下,可以利用如下方法完成數(shù)據(jù)的轉(zhuǎn)換工作。1如果某一系統(tǒng)具備把數(shù)據(jù)庫(kù)內(nèi)容包括文件參數(shù),圖形實(shí)體的數(shù)據(jù)轉(zhuǎn)換為文本文件(*.dat,*.txt)的功能,那么,可以方便地對(duì)這些數(shù)據(jù)進(jìn)行處理,通過(guò)編程把這些數(shù)據(jù)讀入自己的系統(tǒng)中;2如果某一系統(tǒng)的數(shù)據(jù)文件結(jié)構(gòu)、圖形實(shí)體的數(shù)據(jù)結(jié)構(gòu),而通過(guò)這些結(jié)構(gòu)存入外部設(shè)備如硬盤的數(shù)據(jù)沒(méi)有經(jīng)過(guò)加密處理,那么,可以編程直接讀取數(shù)據(jù)庫(kù)數(shù)據(jù)。 3如果某一系統(tǒng)的數(shù)據(jù)文件結(jié)構(gòu)、圖形

21、實(shí)體的數(shù)據(jù)結(jié)構(gòu),而通過(guò)這些結(jié)構(gòu)存入外部設(shè)備如硬盤的數(shù)據(jù)已經(jīng)經(jīng)過(guò)加密處理,那么,必須先得到加密的具體算法,再通過(guò)編程直接讀取數(shù)據(jù)庫(kù)數(shù)據(jù)。4到目前為此,不同的GIS系統(tǒng)都可以把矢量圖形數(shù)據(jù)轉(zhuǎn)換為DXF(Drawing Interchange Infomat)格式或讀入DXF格式的數(shù)據(jù)文件,而DXF格式在全世界是統(tǒng)一的,而且是公開(kāi)發(fā)布的。所以,不同系統(tǒng)間可以通過(guò)DXF格式進(jìn)行數(shù)據(jù)交流。課堂討論利用GIS技術(shù)設(shè)計(jì)一個(gè)北京大學(xué)實(shí)時(shí)學(xué)生上課情況查詢系統(tǒng)假設(shè)學(xué)生的位置能夠精確定位。系統(tǒng)的功能如下: 1 查詢某一學(xué)生所在的教室;2 查詢某一學(xué)生相鄰的學(xué)生姓名;3 統(tǒng)計(jì)某一教室的學(xué)生總?cè)藬?shù);4 統(tǒng)計(jì)全校的學(xué)生上

22、課人數(shù)。假設(shè)教室、學(xué)生的分布如以下圖所示,請(qǐng)?zhí)岢鰯?shù)據(jù)模型和數(shù)據(jù)結(jié)構(gòu)及其它處理方法。圖 3-42教室及學(xué)生位置分布圖   GIS教程/空間數(shù)據(jù)的轉(zhuǎn)換/第十節(jié)返回首頁(yè)柵格、矢量數(shù)據(jù)的相互轉(zhuǎn)換35 柵格、矢量數(shù)據(jù)的相互轉(zhuǎn)換 地理信息系統(tǒng)空間數(shù)據(jù)類型主要有矢量和柵格結(jié)構(gòu)。矢量結(jié)構(gòu)包含有拓?fù)湫畔?,通常?yīng)用于空間關(guān)系的分析;柵格數(shù)據(jù)那么易于表示面狀要素,主要應(yīng)用于空間分析和圖象處理。由于柵格和矢量數(shù)據(jù)在GIS應(yīng)用過(guò)程中各有其優(yōu)缺點(diǎn),所以,一般情況下,同一個(gè)GIS系統(tǒng)能夠處理、存儲(chǔ)柵格和矢量數(shù)據(jù)。對(duì)同一研究區(qū)域而言,有時(shí)為了分析處理問(wèn)題的方便,需要實(shí)現(xiàn)柵格和矢量數(shù)據(jù)間的轉(zhuǎn)換如掃

23、描圖象的矢量化,地形圖的柵格化。351 矢量向柵格的轉(zhuǎn)換圖3-37 柵格單元屬性值確實(shí)定從矢量向柵格轉(zhuǎn)換過(guò)程中,應(yīng)盡量保持矢量圖形的精度。在決定屬性值時(shí)盡可能保持空間變量的真實(shí)性和最大信息量。在圖3-37中,格網(wǎng)單元對(duì)應(yīng)幾種不同的屬性值,而每一單元只能取一個(gè)值。在這種情況下,有如下一些取值方法。(1)中心點(diǎn)法:用處于格網(wǎng)單元0處的地物類型或空間特征決定屬性值。此時(shí),該單元屬性值為C。此法常用于連續(xù)分布的地理要素,如降雨量分布、大氣污染等;(2)面積占優(yōu)法:以占單元面積最大的地物類型和空間特征決定格網(wǎng)單元的屬性值。此時(shí),柵格單元的屬性值為B。面積占優(yōu)法適合分類較細(xì)、地物類別斑塊較小的情況;(3)重要性法:根據(jù)格網(wǎng)單元內(nèi)不同地物的重要性,選取最重要的地物類型代表相應(yīng)的格網(wǎng)單元的屬性值。這種方法對(duì)于特別重要的地理實(shí)體,盡管其面積很小或不在格網(wǎng)的中心,也采取保存的原那么。重要性法常用于具有特殊意義而面積較小的地理要素,特別是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論