版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 畢 業(yè) 設 計 [論 文]</p><p> 題 目: 緩沖區(qū)分析與應用 </p><p> 學 院: 測繪工學院 </p><p> 專 業(yè): 地理信息系統(tǒng)
2、 </p><p> 姓 名: </p><p> 學 號: </p><p> 指導老師: </
3、p><p> 完成時間: 2013年5月25日 </p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p><b> 第一章 緒 論3</b></p>
4、;<p> 1.1.緩沖區(qū)問題的提出及意義3</p><p> 1.1.1緩沖區(qū)分析問題的提出3</p><p> 1.1.2緩沖區(qū)分析問題的意義4</p><p> 1.2 緩沖區(qū)分析實現(xiàn)的常用算法5</p><p> 1.2.1凸角圓弧法原理5</p><p> 1.2.2角分線
5、法原理6</p><p> 1.2.3柵格法原理7</p><p> 1.3論文的主要內(nèi)容7</p><p> 第二章 建立空間對象緩沖區(qū)方法8</p><p> 2.1 空間對象的數(shù)據(jù)表示8</p><p> 2.1.1 空間數(shù)據(jù)的柵格模型和矢量模型8</p><p>
6、 2.1.2 柵格數(shù)據(jù)——BMP 格式文件說明8</p><p> 2.2 建立空間對象緩沖區(qū)的原理12</p><p> 2.2.1 空間對象緩沖區(qū)實現(xiàn)的矢量法原理12</p><p> 2.2.2 空間對象緩沖區(qū)實現(xiàn)的柵格法原理13</p><p> 2.3 基于矢量的空間對象緩沖區(qū)生成算法的引理和概念14</p&
7、gt;<p> 第三章 研究方法和技術路線20</p><p> 3.1 研究方法20</p><p> 3.2 技術路線21</p><p> 第四章 緩沖區(qū)分析的實現(xiàn)23</p><p> 4.1打開工作空間23</p><p> 4.2.自定義緩沖區(qū)23</p>
8、<p> 4.3生成緩沖區(qū)28</p><p> 4.4緩沖區(qū)分析28</p><p> 4.5最終實現(xiàn)的功能32</p><p> 4.6基于矢量和柵格的緩沖區(qū)算法比較37</p><p><b> 第五章 總結39</b></p><p><b>
9、5.1 結論39</b></p><p> 5.2 問題及展望39</p><p><b> 參考文獻38</b></p><p><b> 致謝41</b></p><p><b> 摘 要</b></p><p> 本
10、文對空間對象的緩沖區(qū)分析算法作了說明,討論了分別利用圖形學方法和圖像處理的形態(tài)學方法建立地理信息系統(tǒng)中空間對象的緩沖區(qū)算法,并且就兩種算法的異同做出了分析。</p><p> 在矢量算法中,各類地理要素根據(jù)其空間形態(tài)特征分為點、線、面三類,分別以計算機屏幕數(shù)據(jù)的點、線、面圖形對象表示,進行緩沖區(qū)分析。</p><p> 在柵格算法中,地理空間被劃分為規(guī)則的小單元(像元),空間位置由像元
11、的行、列號表示。以膨脹法原理為基礎,進行緩沖區(qū)分析。</p><p> 關鍵字:地理信息系統(tǒng),緩沖區(qū)分析,矢量法,柵格法,膨脹法</p><p><b> ABSTRACT</b></p><p> This paper illuminates the arithmetic of buffer analysis to spacial ob
12、ject. In this paper two arithmetic are discussed, one is based on the computer graphic technology , the other is based on Mathematical Morphology. Then, the similarities and differences of such two arithmetic are discuss
13、ed too.</p><p> In the vector arithmetic, spacial objects are divided into three</p><p> kinds, point、line、polygon, which are expressed by the graphic object on the computer screen. Buffer ana
14、lysis is based on such kind of data.</p><p> In the grid arithmetic, spacial objects are divided into grids.The spacial position is marked by the row and arrange of grids.This arithmetic is based on the exp
15、and method of Mathematical Morphology. </p><p> Keywords: Geographical information system(GIS),buffer analysis, vector method, grid method ,expand method.</p><p><b> 第一章 緒 論</b><
16、;/p><p> 1.1.緩沖區(qū)問題的提出及意義</p><p> 1.1.1緩沖區(qū)分析問題的提出</p><p> 地理信息系統(tǒng)(Geographic Information System簡稱GIS)是一項以計算機為基礎的新興技術,圍繞著這項技術的研究、開發(fā)和應用形成了一門交叉性、邊緣性的學科。從20世紀60年代出現(xiàn)至今,只有短短40多年的時間,但是他的發(fā)展非常
17、迅速,已經(jīng)成為多學科集成并應用于多領域的基礎平臺,成為地學空間信息處理的重要手段和工具。</p><p> 地理信息系統(tǒng)具有空間數(shù)據(jù)的輸入、存儲、管理、分析和輸出等功能,地理信息系統(tǒng)的主要目的是為了分析空間數(shù)據(jù),以提供空間決策支持信息,因此,空間分析是地理信息系統(tǒng)的主要功能,是核心,是靈魂。</p><p> 空間分析就是利用計算機對數(shù)字地圖進行分析,從而獲取和傳輸空間信息。由于空間分
18、析對空間信息(特別是隱含信息)所具有的提取和傳輸功能,它已經(jīng)成為地理信息系統(tǒng)區(qū)別于一般信息系統(tǒng)的功能特征,也成為評價一個地理信息系統(tǒng)功能的主要指標之一。</p><p> 緩沖區(qū)分析是地理信息系統(tǒng)最重要和最基本的空間操作功能之一。緩沖區(qū)分析是根據(jù)點、線、面實體基礎,自動建立其周圍一定寬度范圍內(nèi)的緩沖區(qū)多邊形實體,從而實現(xiàn)空間數(shù)據(jù)在其領域得以擴展的信息分析方法。例如,公共設施(商場、郵局、銀行、醫(yī)院等)的服務半徑
19、,大型水庫建設引起的搬遷,都是一個鄰近度的問題。城市的噪音污染源所影響的一定空間范圍、交通線兩側所劃定的綠化帶,既可分別描述為點的緩沖區(qū)與線的緩沖區(qū)帶。</p><p> 緩沖區(qū)分析的基本思想是給定一個空間物體(的集合),確定它(們)的某鄰域,鄰域的大小由鄰域半徑R決定。因此物體Oi的緩沖區(qū)的定義如下:</p><p> Bi ?{x : d (x, Oi ) ≤?R} </p&
20、gt;<p> 即對象Oi的半徑為R的緩沖區(qū)是全部距Oi的距離d小于等于R的點的集合,d一般是指最小歐氏距離。 對于多個對象的集合:</p><p> O ?{Oi :i ??1, 2, 3,...., n}</p><p> 其半徑為R的緩沖區(qū)是單個對象的緩沖區(qū)的并,即:</p><p><b> n</b></p
21、><p><b> B ??????B</b></p><p> 1.1.2緩沖區(qū)分析問題的意義</p><p> 緩沖區(qū)信息處理在現(xiàn)實生活中有廣泛的應用,可以從以下幾個方面看:</p><p> (1) 緩沖區(qū)分析在生態(tài)環(huán)境影響評價中的應用</p><p> 在特定的時空環(huán)境里,生態(tài)環(huán)境問
22、題的產(chǎn)生是由于自然、人為條件下各生態(tài)因子綜合作用的結果,這些生態(tài)因子在不同程度上都具有某種地理含義。地理信息系統(tǒng)是對具有地理含義的因子進行統(tǒng)計、查詢、分析的有力工具。因此,利用地理信息系統(tǒng)的相關技術來分析、評價生態(tài)環(huán)境問題的影響就顯得理所當然。目前,在整個環(huán)境領域,地理信息系統(tǒng)的應用得到了蓬勃的發(fā)展,空間數(shù)據(jù)的建立、屬性數(shù)據(jù)的逐步完善、空間數(shù)據(jù)與屬性數(shù)據(jù)的鏈接等為環(huán)境的評價、管理與規(guī)劃提供了一個簡單、便捷、明晰的運作平臺.隨著生態(tài)環(huán)境問
23、題的出現(xiàn)以及科技的進步和人們生態(tài)環(huán)保意識的提高,越來越多的人投向生態(tài)環(huán)境的建設與整治中或盡量減少對自然生態(tài)環(huán)境的干擾.但人類對生態(tài)環(huán)境的主觀改造以及人類必須進行生產(chǎn)活動的效果與影響總是具有隱蔽性和動態(tài)性的特點,其影響范圍常常表現(xiàn)為一個趨勢面.如何有效、直觀地確定趨勢面亦即影響范圍的大小是生態(tài)環(huán)境影響評價面對的主要問題,地理信息系統(tǒng)的空間分析功能之一的緩沖區(qū)分析正是對這一趨勢面加以分析的有力工具。例如,在環(huán)境治理時,常在污染的河流周圍劃出
24、一定寬度的范圍表示受到污染的區(qū)域;又如在飛機場,常根據(jù)健康需要在周圍劃出一定范圍的區(qū)域作為</p><p> ?。?)緩沖區(qū)分析在城市規(guī)劃中的應用</p><p> 城市作為人口集中、規(guī)模龐大、結構復雜、不斷發(fā)展的動態(tài)系統(tǒng),它的發(fā)展變化不僅表現(xiàn)在人口的增加、經(jīng)濟的發(fā)展和功能的變化上,而且也表現(xiàn)在城市空間結構的變化上。城市空間結構的基本要素是核心、交通網(wǎng)絡、節(jié)點以及不同土地利用模式形成的面
25、狀區(qū)域。核心的作用無庸置疑,多數(shù)城市的生長都是由核心開始的。交通網(wǎng)絡則是城市生長的骨架,這里的交通網(wǎng)絡不僅包含城市內(nèi)部的主干街道,而且包括城市對外交通干線,它往往形成城市的發(fā)展軸。節(jié)點可以是交通網(wǎng)絡中重要的交叉點,也可以是重要的郊區(qū)小城鎮(zhèn)或衛(wèi)星城鎮(zhèn),它們是城市中人流物流能量流和信息流集聚和擴散的源地。正是這些基本要素決定了整個城市的擴展。緩沖區(qū)分析又可以稱為空間影響分析,是地理信息系統(tǒng)中定量研究距離因素影響的重要工具。因而進行基于重點區(qū)
26、域和交通線的緩沖區(qū)分析,可以定量地描述城市用地擴展過程以及空間分布。</p><p> 例如:在土地評測中,要根據(jù)離開交通線或繁華區(qū)的遠近,進行地價估算;特定場所的選址如大型超市、公園、療養(yǎng)院要依靠諸如“靠近交通線”、“沿河流或瀕臨湖泊”、“包含林塊和綠地”等有關緩沖區(qū)操作。</p><p> (3)在地理數(shù)據(jù)結構化自動處理中的應用</p><p> 地理信息
27、處理的實質(zhì)是綜合分析與評測,借此賦以地理實體相應重要性,為管理與規(guī)劃決策提供依據(jù)和為它們的多比例顯示奠定基礎。然后,地圖的地理信息的綜合評價必須在信息結構化的基礎上進行,對于簡單的數(shù)字化面條數(shù)據(jù)是難以進行有效的分析和處理的。例如,河網(wǎng)樹結構,地形線(山脊線與谷地線)的結構化(樹結構的自動建立)都在遞歸地執(zhí)行緩沖區(qū)操作。邊防城鎮(zhèn)、沿海港口和地形等信息有其獨特的不言而喻的重要性,這些都是借助緩沖區(qū)操作而實現(xiàn)的。</p><
28、;p> 綜上所述,緩沖區(qū)分析在現(xiàn)實生活中有如此廣泛的應用,所以,對緩沖區(qū)算法的研究非常的有必要。</p><p> 1.2 緩沖區(qū)分析實現(xiàn)的常用算法</p><p> 緩沖區(qū)生成矢量算法,特別是線緩沖區(qū)的生成算法,常見的有凸角圓弧法和角平分線法。凸角圓弧法是逐個求得每個線段單獨的緩沖區(qū),然后用多邊形疊質(zhì)算法依次合并。算法所生成的緩沖區(qū)邊界,軸線轉(zhuǎn)角尖銳的轉(zhuǎn)折點的平行線交點隨緩沖
29、距的增大將會迅速遠離軸線,這就會出現(xiàn)尖角和凹陷的失真現(xiàn)象。角平分線法由畫逐個線段的簡單平行線,尖角平滑矯正和自相交處理三步構成。角平分線的缺點是難以最大限度的保證平行曲線的等寬性。</p><p> 1.2.1凸角圓弧法原理</p><p> 在軸線首末點處,作軸線的垂線并按雙線或緩沖區(qū)半寬E截出左右邊線的起迄點;在軸線的其它各個轉(zhuǎn)折點上,首先判斷該點的凸凹特性,在凸側用圓弧彌合,而在
30、凹側用與該點所關聯(lián)的前后兩鄰邊距軸線的偏移量為E的兩平行線的交點來生成對應頂點(如下圖)。由于在凸側用圓弧彌合,使凸側平行邊線與軸線等寬。而在凹側,平行邊線相交在角分線上。</p><p> 圖1.1 凸角圓弧法</p><p> 1.2.2角分線法原理</p><p> 在軸線首末點處,作軸線的垂線并按雙線或緩沖區(qū)半寬E截出左右邊線的起迄點;在軸線的其它
31、各個轉(zhuǎn)折點上,用與該點所關聯(lián)的前后兩鄰邊距軸線的偏移量為E的兩平行線的交點來生成兩平行邊線的對應頂點。如圖1.2</p><p> 圖1.2 角平分線法</p><p> 1.2.3柵格法原理</p><p> 柵格方法又叫點陣法,它將點、線、面矢量數(shù)據(jù)轉(zhuǎn)化為柵格數(shù)據(jù),進行像元加粗,然后作邊緣提取;在原理上比較簡單,容易實現(xiàn),但受精度的限制;并且內(nèi)存開銷大,所
32、能處理的數(shù)據(jù)量受到機器硬件的限制。</p><p> 1.3論文的主要內(nèi)容</p><p> 本論文對建立空間對象的緩沖區(qū)的矢量算法和柵格算法進行分析,探討了這兩種建立空間對象緩沖區(qū)算法的異同和應用范圍。</p><p><b> 論文結構如下:</b></p><p> (1)空間對象緩沖區(qū)的實現(xiàn)</p&
33、gt;<p> (2)建立點、線、面空間對象緩沖區(qū)的矢量方法</p><p> ?。?)建立點、線、面空間對象緩沖區(qū)的柵格方法</p><p> ?。?)建立點、線、面空間對象緩沖區(qū)矢量、柵格方法的比較分析</p><p> 第二章 建立空間對象緩沖區(qū)方法 </p><p> 2.1 空間對象的數(shù)據(jù)表示 </p>
34、;<p> 2.1.1 空間數(shù)據(jù)的柵格模型和矢量模型 </p><p> 在柵格模型中,地理空間被劃分為規(guī)則的小單元(像元),空間位置由像元</p><p> 的行、列號表示。例如:一條道路由其值為道路編碼值的一系列相聯(lián)的像元表</p><p> 示,要從數(shù)據(jù)庫中刪除這條道路,則必須將所有有關像元的值變成該道路領域</p><
35、;p> 的背景值。柵格數(shù)據(jù)模型的設計思想是將地理空間看成一個連續(xù)的整體,在這</p><p> 個空間中處處有定義。在本畢業(yè)設計中柵格法緩沖區(qū)分析針對的是二值化后的</p><p> 影像數(shù)據(jù)。其格式為*.bmp。 </p><p> 矢量模型將地理空間看成是一個空間區(qū)域,地理要素存在其間。在矢量模</p><p> 型中,各
36、類地理要素根據(jù)其空間形態(tài)特征分為點、線、面三類。點狀要素用坐</p><p> 標點對表示其位置;線狀要素用其中心軸線上的抽樣點坐標串表示其位置和形</p><p> 狀;面狀要素用范圍輪廓線上的抽樣點坐標串表示其位置和范圍。在本畢業(yè)設</p><p> 計中矢量法緩沖區(qū)分析對象是利用計算機屏幕數(shù)據(jù)的點、線、面圖形對象。 </p><p&g
37、t; 2.1.2 柵格數(shù)據(jù)——BMP 格式文件說明 </p><p> 一個 BMP 文件大體上分成如下 4 個部分:BITMAPFILEHEADER(位圖文件頭)、BITMAPINFOHEADER(位圖信息頭)、Palette(調(diào)色版)、DIB Pixels(DIB 圖像</p><p><b> 數(shù)據(jù))。 </b></p><p>
38、 1)位圖文件頭 BITMAPFILEHEADER </p><p><b> 它的結構如下: </b></p><p> typedef struct tagBITMAPFILEHEADER{ </p><p> WORD bfType; </p><p> DWORD bfSize; </p>
39、<p> WORD bfReserved1; </p><p> WORD bfReserved2; </p><p> DWORD bfOffBits; </p><p> }BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER; </p><p> 該結構的長度是固定的,為 14 個字節(jié),
40、各參數(shù)說明如下:</p><p> bfType:指定文件類型,必須是 0x424D,即字符串“BM”。也就是說所有</p><p> 的“.bmp”文件的頭兩個字節(jié)都是“BM”bfSize:指定文件大??; </p><p> bfReserved1、bfReserved2:為保留字,不用考慮;</p><p> bfOffBits:
41、為文件頭到實際的位圖數(shù)據(jù)的偏移字節(jié)數(shù),也就是前三部分長</p><p><b> 度之和。 </b></p><p> 2)位圖信息頭 BITMAPINFOHEADER </p><p><b> 其結構如下: </b></p><p> typedef struct tagBITMAPIN
42、FOHEADER{ </p><p> DWORD bfSize;</p><p> LONG biWidth; </p><p> LONG biHeight; </p><p> WORD biPlanes; </p><p> WORD biBitCount; <
43、/p><p> DWORD biCompression; </p><p> DWORD biSizeImage; </p><p> LONG biXPelsPerMeter; </p><p> LONG biYPersPerMeter; </p><p> DWORD
44、biClrUsed; </p><p> DWORD biClrImportant; </p><p> }BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER; </p><p> 該結構的長度為 40 個節(jié),各參數(shù)的意義說明如下: </p><p> biSize:指定這個結構的大小,為 4
45、0 個字節(jié); </p><p> biWidth:指定圖像的寬度,單位是像素; </p><p> biHeight:指定圖像的高度,單位是像素; </p><p> biPlanes:必須是 1; </p><p> biBitCount:指定表示顏色要用到的位數(shù),常用的值 1(黑白)8(256 色)、</p><
46、;p><b> 24(真彩色); </b></p><p> biCompression:指定位圖是否壓縮,有效值為 BI_RGB、BI_RLE4、BI_RLE8。</p><p> 其中 BI_RGB 為不壓縮的情況。 </p><p> biSize Im age = biWidth × biHeight′</
47、p><p> biSizeImage;指定實際的位圖數(shù)據(jù)占用的字節(jié)數(shù)??梢杂孟旅娴墓接嬎悖?</p><p> 需要注意的是:上述公式中的 biWidth 不一定總等于 biWidth,biWidth 必</p><p> 須是 4 的整數(shù)倍,表示大于或等于 biWidth 的離 4 最近的整倍數(shù)。 </p><p> biXPels
48、PerMeter:指定目標設備的水平分辨率,單位是每米的像素個數(shù); </p><p> biYPelsPerMeter;指定目標設備的垂直分辨率,單位是每米的像素個數(shù); </p><p> biClrUsed:指定本圖像實際用到的顏色數(shù),如果該值為 0 則用到的顏色數(shù)</p><p> 為 2 的 biBitCount 次冪; </p><
49、p> biClrImportant:指定本圖像中重要的顏色數(shù),如果該值為零,則認為所</p><p> 用的顏色都是重要的。 </p><p> 3)alette(調(diào)色板) </p><p> 調(diào)色板實際上是一個數(shù)組,共有 biClrUsed 個元素(如果該值為 0,則為 2</p><p> 的 biBitCount 次冪)
50、。數(shù)組中每個元素的類型為一個 RGBQUAD 結構,占 4 個字節(jié)。結構定義如下: </p><p> typedef struct tagRGBQUAD{ </p><p> BYTE rgbBlue; </p><p> BYTE rgbGreen; </p><p> BYTE rgbRed; &
51、lt;/p><p> BYTE rgbReserved; </p><p> }RGBQUAD; </p><p> 注意:有些位圖,比如真彩色圖,沒有調(diào)色板。他們的位圖信息頭BITMAPINFOHEADER 后直接是 DIB 數(shù)據(jù)。 </p><p><b> DIB 圖像數(shù)據(jù) </b></p&g
52、t;<p> 它分兩種情況:對于用到調(diào)色板的位圖,圖像數(shù)據(jù)就是該像素顏色在調(diào)色</p><p> 板中的索引值;對于真彩色圖,圖像數(shù)據(jù)就是實際的 R、G、B 值。 </p><p> 對于 2 色位圖,用 1 位就可以表示該像素的顏色,因此一個字節(jié)可以表示 8</p><p><b> 個像素; </b></p>
53、;<p> 對于 16 色位圖,用 4 位可以表示一個像素的顏色,所以 1 個字節(jié)可以表示</p><p><b> 2 個像素; </b></p><p> 對于 256 色位圖,一個字節(jié)剛好表示一個像素; </p><p> 對于真彩色圖,3 個字節(jié)才能表示 1 個像素 </p><p> 注
54、意:1. 每一行的字節(jié)數(shù)必須是 4 的整倍數(shù),如果不是,則需要補齊; </p><p> 2. 圖像數(shù)據(jù)是按照從上到下、從左到右的順序存儲;我們最先讀到的是圖</p><p> 像最下面一行的左邊第一個像素,然后是左邊第二個像素接下來是倒數(shù)第二行左邊第一個像素,左第二個像素依此類推,最后得到的是最上面一行的最后一個像素。 在 dibapi.h 和 dibapi.cpp 中有處理
55、*.bmp 格式文件的常用的函數(shù) </p><p> 如:HDIB ReadDIBFile(CFile& file)函數(shù)的參數(shù) Cfile &file 為文件名;該函數(shù)的返回值是文件中的圖像數(shù)據(jù)的句柄。 函數(shù)原型 BOOL WINAPI SaveDIB(HDIB hDib, CFile& file)的第一個參數(shù) hDIB表示保存圖像數(shù)據(jù)的內(nèi)存區(qū)域的句柄,第二個參數(shù) CFile&
56、; file 為保存圖像的文件名。另外,還有查找位圖像素的函數(shù) LPSTR WINAPI FindDIBBits(LPSTR lpbi),用于計算 DIB 位圖圖像數(shù)據(jù)的地址,返回一個指向位圖圖像數(shù)據(jù)起始位置的指針。 </p><p> 2.2 建立空間對象緩沖區(qū)的原理 </p><p> 2.2.1 空間對象緩沖區(qū)實現(xiàn)的矢量法原理 </p><p> ?。?)
57、點目標 P 的緩沖區(qū):以 P 為圓心,以緩沖距 E 為半徑作圓。</p><p> 圖2.1點目標的矢量法緩沖區(qū)分析</p><p> (2)線目標 L 的緩沖區(qū):以 L 為軸線,以緩沖距 E 為平移量向兩側作平行曲(折)線。在軸線兩端構造兩個半圓弧,最后形成圓頭(蠶形)緩沖區(qū)。</p><p> 圖 2.2 線目標的矢量法緩沖區(qū)分析 </p>
58、<p> ?。?)面目標 A 的緩沖區(qū):以 A 的邊界線 LA 為軸線,以緩沖距 E 為平移量向邊界線的外側作平行曲(折)線。</p><p> 圖 2.3 面目標的矢量法緩沖區(qū)分析 </p><p> 2.2.2 空間對象緩沖區(qū)實現(xiàn)的柵格法原理 </p><p> 本畢業(yè)設計是基于膨脹算法的緩沖區(qū)分析。從數(shù)學的角度看,緩沖區(qū)分析</p
59、><p> 的基本思想是給定一個空間對象或集合,確定它們的領域。 </p><p> 數(shù)學形態(tài)學是一門新興的圖像分析學科,其基本思想是:利用一個結構元</p><p> 素去探測一個圖像,看是否能夠?qū)⑦@個結構元素很好地填放在圖像的內(nèi)部,同</p><p> 時驗證填放結構元素的方法是否有效。 </p><p>
60、圖學形態(tài)學中的基本運算有膨脹算法,其定義為: </p><p> A⊕B={a: (-B+a)∩ A≠Φ} </p><p> 上式表示把結構元素B平移a后得到Ba,若Ba擊中A(即Ba與A的交集不為</p><p> 空),記下這個a點。所有滿足上述條件的a點組成的集合稱做A被B膨脹的結果。 </p><p> 圖2.4中A表示的大
61、長方形是被處理的對象,B所示的小正方形是結構元素,</p><p> 原點指定為B的中心。不難知道,對于任意一個在陰影部分的點a,Ba擊中A,</p><p> 所以A被B膨脹的結果就是那個陰影部分。陰影部分包括A的所有范圍,就像A</p><p> 膨脹了一圈似的,這就是將這種算法稱為膨脹的原因。</p><p> 圖 2.4
62、膨脹法原理圖 </p><p> 空間對象緩沖區(qū)的膨脹生成算法原理: </p><p> ?。?)點目標 P 的緩沖區(qū):以 P 為點生成元,借緩沖距 E 規(guī)定像元加粗的結構元</p><p> 素,然后進行像元的膨脹。 </p><p> (2)線目標 L 的緩沖區(qū):以 L 為線生成元,借緩沖距 E 規(guī)定像元加粗的結構元</p&g
63、t;<p> 素,然后進行像元膨脹。</p><p> 面目標 A 的緩沖區(qū):以 A 的邊界線 LA 為軸線,借助緩沖距 E 規(guī)定像元加粗的結構元素,并進行像元膨脹。</p><p> 2.3 基于矢量的空間對象緩沖區(qū)生成算法的引理和概念 </p><p> 空間信息系統(tǒng)中,空間目標分為點目標、線目標、面目標,以及點、線、面目標任意組合而成的復
64、雜目標。空間目標的緩沖區(qū)包括點目標緩沖區(qū)、線目標緩沖區(qū)、面目標緩沖區(qū)。點目標的緩沖區(qū),是圍繞該目標的半徑為緩沖距的圓周所包圍的區(qū)域;線目標的緩沖區(qū),是沿線目標的兩側距離不超過緩沖距的點組成的區(qū)域;面目標的緩沖區(qū),是沿該目標邊界內(nèi)側或外側距離不超過緩沖距的點組成的區(qū)域。 </p><p> 為討論方便,首先引入下面幾個引理和概念: </p><p> 引理一 當沿著簡單多邊形的頂點串方向
65、走過所有有向邊時,如果多邊形的頂點以逆時針方向串連起來,則我們的左側始終在多邊形的內(nèi)部;反之,如果多邊形的頂點以順時針方向串連起來,則我們的右側始終在多邊形的內(nèi)部。 </p><p> 引理二 當沿著簡單多邊形的任一條有向邊從起點走向終點時,如果我們的左側始終在多邊形的內(nèi)部,則多邊形的頂點以逆時針方向串連起來;反之,如果我們的右側始終在多邊形的內(nèi)部,則多邊形的頂點以順時針方向串連起來。 </p>
66、<p> 定義一 如果多邊形的頂點以逆時針方向串連起來,則稱此多邊形的方向為正向;如果多邊形的頂點以順時針方向串連起來,則稱此多邊形的方向為負向。 </p><p> 正多邊形 負多邊 形</p><p> 圖2.5正負多邊形的定義</p><p> 定義二 在簡單多邊形任意頂
67、點前后兩個矢量形成的兩個角度中,位于多邊</p><p> 形內(nèi)的角度稱為該頂點的內(nèi)角,位于多邊形外的角度稱為該頂點的外角</p><p> 2.4線狀目標緩沖區(qū)的生成方法 </p><p> 線狀目標緩沖區(qū)的生成是點、線、面三種基本空間矢量要素緩沖區(qū)生成的關鍵和基礎。在此節(jié)介紹了本次畢業(yè)設計實現(xiàn)線狀目標緩沖區(qū)自動生成的矢量算法。 </p>&l
68、t;p> 線狀目標緩沖區(qū)總的生成分兩個階段,即單個線狀緩沖區(qū)多邊形的獨立生成過程和多個線狀目標緩沖區(qū)多邊形間的重疊合并過程。</p><p> 1、獨立線狀目標緩沖區(qū)的自動生成 </p><p> 在基于矢量數(shù)據(jù)格式的地理信息系統(tǒng)中,任何線狀目標的空間形態(tài)主要是通過“折線”的方式來表示的,因此,所謂的線狀目標緩沖區(qū)的生成實際上等價于“折線”緩沖區(qū)的生成問題。通過分析折線的形態(tài)特
69、征會發(fā)現(xiàn)任何形狀的折線都是由折線端點、折線上的線段和線段間的拐點三個基本要素所構成。顯然,要分析折線緩沖區(qū)的生成算法,必需從構成折線的三要素著眼。下面分別介紹折線端點、折線上的線段和線段間的拐點的緩沖區(qū)生成算法,然后在將它們組合在一起形成任意折線等距緩沖區(qū)的自動生成算法。 </p><p> (1)線段緩沖區(qū)的生成 </p><p> 任意方向線段(原線段)的緩沖區(qū)線段應與原線段構成一
70、個矩形。圖 3.2中 CD 和 EF 兩條線段代表元線段 AB 前進方向(起始點到結束點)的左右兩條緩緩沖區(qū)線段</p><p><b> F</b></p><p> C A E </p><p> 圖 2.6 線段緩沖區(qū)的生成</p><p> 設原線段的起始點 A 和結束點 B 的坐標分別為
71、(Xa,Ya)和(Xb,Yb),緩沖區(qū)距離為 d,則線段 AB 的左緩沖區(qū)線段 CD 的端點坐標(Xc,Yc)(Xd,Yd)和右緩沖區(qū)線段 EF 的端點坐標(Xe,Ye)(Xf,Yf)的計算公式應分別為</p><p> 1)當Ya ? Yb > 0時:</p><p> Xc = Xa + d ×k ÷ 1+ k Xd = 2 × X
72、a ? Xc </p><p> Yc = Xd ? d ÷ 1 + k Yd = 2 × Ya ? Yc </p><p> Xe = Xb + d × k ÷ 1+ k Xf = 2× Xb ? Xc</p><p> Ye = Xb ? d ÷ 1 +
73、 k Yf = 2 × Yb ? Yc</p><p> 2)當Ya ? Yb < 0時: </p><p> Xc = Xa ? d × k ÷ 1+ k Xd = 2 ×Xa ? Xc </p><p> Ye = Xd + d ÷ 1 + k
74、 Yd = 2 × Ya ? Yc </p><p> Xe = Xb ? d × k ÷ 1+ k Xf = 2× Xb ? Xe</p><p> Ye = Xb ? d × k ÷ 1 + k Yf = 2× Yb ? Ye </p><p> 其
75、中:k為線段AB直線的斜率,k=(Yb ? Ya ) ÷ (Xb ? Xa </p><p> (2) 折線端點緩沖區(qū)的生成 </p><p> 理論上講,折線端點的緩沖區(qū)應該是一個半圓弧。其原心在折線的端點上,連接半圓弧兩個端點的直徑應垂直于折線的端點線段,如圖 3.3 所示。但是由于整條折線的緩沖區(qū)應該是一個閉合多邊形,所以折線端點出的緩沖區(qū)實際上只能是一個對上述半圓弧具
76、有一定擬和精度的正 n 邊形。</p><p> 圖 2.7 折線端點的緩沖區(qū)生成</p><p> 在圖 2.7 中,設待生成緩沖區(qū)的折線端點 A(Xa,Ya)其右側緩沖區(qū)線段端點E(Xe,Ye),以 A 為圓心,d 為半徑順時針轉(zhuǎn) 180 得半圓弧 EC。 </p><p> (3)折線拐點緩沖區(qū)的生成 </p><p> 所謂折
77、線上的拐點是指折線上兩條相鄰線段的連接處。顯然,構成拐點的兩條相鄰線段或者在同一條直線上或者不在同一條直線上。 </p><p> 當兩條直線在同一條直線上時,根據(jù)兩條線段生成的同側緩沖區(qū)也必然在同一條直線上(這里假設構成拐點的兩條線段的緩沖區(qū)距離相等)。此時沒有必要再生成拐點處的緩沖區(qū)。 </p><p> 當構成拐點的兩條線段不再同一條直線上時,在折線的拐點處就形成兩個角,其中一個
78、角必然大于 180 而另一個角則小于 180 。把大于 180 的角稱為外角,而小于 180 的角稱為內(nèi)角。在內(nèi)角側不必生成拐點緩沖區(qū),與此相反,在</p><p> 外角側,構成拐點的兩條線段外角側緩沖區(qū)線段不相交。而是形成一個扇形區(qū)圓?。▓A弧圓心在拐點上,圓弧半徑等于緩沖區(qū)的距離)。折線的端點為構成拐點的兩條線段外角側緩沖區(qū)線段靠近拐點處的兩個端點,圖 2.8 中的 D、D’兩點。 </p>
79、<p> 圖 2.8 折線拐點緩沖區(qū)的生成</p><p> (4)任意折線等距緩沖區(qū)的自動生成算法 </p><p> 任意不自相交折線等距緩沖區(qū)的自動生成算法 </p><p> 步驟 1:按照折線的數(shù)字化方向,從折線的第一條線段開始,先生成折線起始端點的半圓弧緩沖區(qū),然后再第一條線段的左側生成該線段的緩沖區(qū)線段。設第一條線段為 i 線段。
80、 </p><p> 步驟 2:判斷 i+1 線段相對當前 i 線段的走向(左拐、右拐或在當前 i 線段的延長線上三種情況)。如果 i+1 線段的走向為左拐或在當前 i 線段的延長線上,則在當前 i 線段的左側只生成其相應的平行緩沖區(qū)線段。否則,除了要生成 當前線段 i 的平行緩沖區(qū)線段外,還要生成拐點的弧形緩沖區(qū)折線。 </p><p> 步驟 3:將新生成的緩沖區(qū)邊界線與已經(jīng)生成的
81、緩沖區(qū)邊界線進行相交計算。如果新生成的緩沖區(qū)邊界線與已生成的緩沖區(qū)邊界線間沒有或只有一個交點,則轉(zhuǎn)入步驟 5;否則,說明緩沖區(qū)邊界線出現(xiàn)了自相交現(xiàn)象,應該進行自相交處理,轉(zhuǎn)入步驟 4。 </p><p> 步驟 4:確定新舊緩沖區(qū)邊界線間的每個交點的特性。最靠近就緩沖區(qū)邊界線上最后線段的交點為新舊緩沖區(qū)邊界線間的正常交點,其他交點為緩沖區(qū)自相交的交點。當新舊緩沖區(qū)邊界線間有兩個交點時,應該設置一個標志變量用語標
82、志新緩沖區(qū)邊界線是進入已有緩沖區(qū)域的點稱為“交疊開始點”,而新緩沖區(qū)邊界線走出已有緩沖區(qū)域的點稱為“交疊結束點”。在交疊開始點和交疊結束點之間必然存在的兩條緩沖區(qū)邊界線就是自相交處理中應該刪掉的線。此外,應對閉合于交疊開始點的閉合緩沖區(qū)進行特殊的標記,因為此閉合緩沖區(qū)圍成的區(qū)域并不是所要的緩沖區(qū)域,而恰恰是非緩沖區(qū)區(qū)域。本文將緩沖區(qū)在閉合曲線內(nèi)部的緩沖區(qū)多邊形稱為正多邊形,而緩沖區(qū)在閉合曲線外側的緩沖區(qū)多邊形被稱為負多邊形。 </
83、p><p> 步驟 5:判斷當前線段是否為折線的最后一條線段。如果當前線段不是折線的最后線段,則將 i 加 1 后返回到步驟 2,如果當前線段是折線的最后線段,則結束緩沖區(qū)生成計算。</p><p> 第三章 研究方法和技術路線</p><p> 本章主要介紹,基于ArcEngine緩沖區(qū)分析用到的軟件,其中Microsoft Visual Basic是一款使用面
84、非常廣的編程語言,比較適合編程的初學者使用。ArcEngine是Arcgis9的系列產(chǎn)品,是基于核心組件庫ArcObject搭建的。</p><p><b> 3.1研究方法</b></p><p> ?。?)文獻搜集法:搜集空間分析的方案設計、需求預測等相關期刊專著以及網(wǎng)絡文獻,對資料進行歸納、整理、分類、分析,得出相關的研究成果,為本論文的研究奠定理論基礎。&l
85、t;/p><p> ?。?)系統(tǒng)分析法:在整個項目研究過程中,始終貫徹以理論知識為基礎,以社會實踐為根本,進行市場調(diào)研分析,以此對本論文進行布局、設計,保證本論文體系結構的邏輯性、科學性、可行性。</p><p> (3)模擬法(模型方法):模擬法是先依照原型的主要特征,創(chuàng)設一個相似的模型,然后通過模型來間接研究原型的一種形容方法。根據(jù)模型和原型之間的相似關系,模擬法可分為物理模擬和數(shù)學模擬
86、兩種</p><p> ?。?)信息研究方法 :信息研究方法是利用信息來研究系統(tǒng)功能的一種科學研究方法。美國數(shù)學、通訊工程師、生理學家維納認為,客觀世界有一種普遍的聯(lián)系,即信息聯(lián)系。當前,正處在“信息革命”的新時代,有大量的信息資源,可以開發(fā)利用。信息方法就是根據(jù)信息論、系統(tǒng)論、控制論的原理,通過對信息的收集、傳遞、加工和整理獲得知識,并應用于實踐,以實現(xiàn)新的目標。信息方法是一種新的科研方法,它以信息來研究系統(tǒng)功
87、能,揭示事物的更深一層次的規(guī)律,幫助人們提高和掌握運用規(guī)律的能力。供基本的面向?qū)ο笾С?。因為越來越多組建的出現(xiàn),程序員可以選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉(zhuǎn)換關鍵詞到標準的大小寫狀態(tài),以及強制使得符號表入口的實體的變量名稱遵循書寫規(guī)則。默認情況下字符串的比較是對大小寫敏感的,但是可以關閉這個功能。VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了建立、使用和重用這些
88、控件的方法,但是由于語言問題,從一個應用程序創(chuàng)建另外一個并不簡單。</p><p><b> 3.2 技術路線</b></p><p> 本文的主要研究技術路線見圖</p><p><b> 圖3.1設計流程圖</b></p><p><b> 本文程序流程圖</b>&
89、lt;/p><p> 圖3.2程序?qū)崿F(xiàn)流程圖 </p><p><b> 緩沖區(qū)分析的實現(xiàn)</b></p><p> 本章是文章的核心部分,將介紹利用湖北省交通路網(wǎng)的網(wǎng)絡數(shù)據(jù)集,以ArcEngine為平臺并通過VB6.0編寫程序來實現(xiàn)緩沖區(qū)分析。文中將給出主要的代碼及相關說明,并在最后貼出運行效果圖。 </p><p>
90、;<b> 4.1打開工作空間</b></p><p> ' 新建一個ShapefileWorkspaceFactory對象,不同類型的數(shù)據(jù)庫使用不同的工作空間對象</p><p> Dim pWorkspaceFactory As IWorkspaceFactory </p><p> Set pWorkspaceFact
91、ory = New ShapefileWorkspaceFactory </p><p> Set OpenWorkspace = pWorkspaceFactory.OpenFromFile(strGDBName, 0)</p><p> ' 使用shapefile的空間對象連接到shapefile數(shù)據(jù)庫</p><p> 4.2.自定義緩沖區(qū)<
92、;/p><p> 要實現(xiàn)在地圖面上拉框、拉多邊形、拉多義線等,只需要使用MapControl的Track系列方法(TrackLine,TrackPolygon等)就很容易獲得要做緩沖區(qū)運算的圖形,這點已經(jīng)在空間查詢部分進行了描述。本例使用了派生自IDisplayFeedback接口的系列對象,即ArcEngine中的FeedBack對象,目的是讓讀者能夠接觸到更多的ArcEngine對象,體會ArcEngine開發(fā)
93、的靈活性。在ArcEngine中所有的FeedBack對象(近30個)都實現(xiàn)了IDisplayFeedBack接口,在本例中要使用NewLineFeedBack、NewEnvelopeFeedBack和NewPolygonFeedback三個對象來創(chuàng)建多義線、矩形和任意多邊形。創(chuàng)建用來做緩沖區(qū)的圖形的過程是:用戶在MapControl上點下鼠標(MouseDown),標志圖形創(chuàng)建的開始,對于點、拉框和選擇要素這三種方式,當發(fā)生Mouse
94、Up的時候,標志動作的結束或圖形創(chuàng)建完畢,對于多義線和多邊形則由于要放生多個MouseDown事件,其以DoubleClick標志圖形的創(chuàng)建結束,在Double</p><p> ’Class Name:clsDrawGeometry</p><p> ’Implements</p><p> Implements esriSystemUI.ITool<
95、/p><p> Implements esriSystemUI.ICommand</p><p><b> ’Event</b></p><p> Public Event EndDraw(ByVal EndDraw As Boolean)</p><p> EndDraw事件在圖形被繪制完畢時觸發(fā),其作用是留給調(diào)用
96、的它的對象進行空間分析。</p><p> 下面給出MouseDown、MouseMove、MouseUp和DoubleClick四個事件的所有代碼。</p><p> Private Sub ITool_OnMouseDown(ByVal button As Long, ByVal shift As Long, ByVal X _ As Long, ByVal Y As Long)&
97、lt;/p><p> '根據(jù)類型來啟動不同的繪制對象</p><p> Setm_pPoint=m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)Select Case m_DrawType</p><p> '是點的時候直接獲得該點</p><p
98、> Case esriGeometryType.esriGeometryPoint</p><p> Set m_pGeometry = m_pPoint</p><p> RaiseEvent EndDraw(True)</p><p> Case esriGeometryType.esriGeometryEnvelope '
99、;矩形拉框</p><p> If m_pNewEnvelopeFeedback Is Nothing Then</p><p> '定義一個矩形feedback,模擬拉框</p><p> Set m_pNewEnvelopeFeedback = New NewEnvelopeFeedback</p><p> Set m_
100、pNewEnvelopeFeedback.Display = m_pScreenDisplay</p><p> m_pNewEnvelopeFeedback.Start m_pPoint</p><p><b> End If</b></p><p> Case esriGeometryType.esriGeometryPolyline
101、 '線</p><p> If m_pNewLineFeedback Is Nothing Then</p><p> Set m_pNewLineFeedback = New NewLineFeedback</p><p> Set m_pNewLineFeedback.Display = m_pScreenDisplay</p
102、><p> m_pNewLineFeedback.Start m_pPoint</p><p><b> Else</b></p><p> '在用戶沒有雙擊前,繼續(xù)畫</p><p> m_pNewLineFeedback.AddPoint m_pPoint</p><p><
103、b> End If</b></p><p> Case esriGeometryType.esriGeometryPolygon</p><p> If m_pNewPolygonFeedback Is Nothing Then</p><p> Set m_pNewPolygonFeedback = New NewPolygonFeedb
104、ack</p><p> Set m_pNewPolygonFeedback.Display = m_pScreenDisplay</p><p> m_pNewPolygonFeedback.Start m_pPoint</p><p><b> Else</b></p><p> '在用戶沒有雙擊前,
105、繼續(xù)畫</p><p> m_pNewPolygonFeedback.AddPoint m_pPoint</p><p><b> End If</b></p><p> Case 1111 '要素緩沖</p><p> Dim pPt As IPoint</p><p> D
106、im pGeo As IGeometry</p><p> Dim pMapCtrl As MapControl</p><p> Dim pFeatLyr As IFeatureLayer</p><p> Dim pFSelection As IFeatureSelection</p><p> Dim pFilter As IS
107、patialFilter</p><p> Dim pTopo As ITopologicalOperator</p><p> Dim i As Integer, Count As Integer</p><p> Set pMapCtrl = m_pHook.hook</p><p> Set pPt = pMapCtrl.ToM
108、apPoint(X, Y)</p><p> Set pTopo = pPt</p><p> Count = pMapCtrl.LayerCount</p><p> Set pFilter = New SpatialFilter</p><p> With pFilter</p><p> Set .Ge
109、ometry = pTopo.Buffer(0.05)</p><p> .SpatialRel = esriSpatialRelIntersects</p><p><b> End With</b></p><p> For i = 0 To Count - 1</p><p> Set pFSelectio
110、n = pMapCtrl.Layer(i)</p><p> pFSelection.SelectFeatures pFilter, esriSelectionResultNew, False</p><p><b> Next</b></p><p> pMapCtrl.Refresh esriViewGeoSelection</
111、p><p> End Select</p><p><b> Exit Sub</b></p><p><b> End Sub</b></p><p> Private Sub ITool_OnMouseMove(ByVal button As Long, ByVal shift As Lon
112、g, ByVal X _As Long, ByVal Y As Long)</p><p> Dim pPoint As esriGeometry.IPoint</p><p> Select Case m_DrawType</p><p> Case esriGeometryType.esriGeometryEnvelope '
113、矩形拉框</p><p> If Not m_pNewEnvelopeFeedback Is Nothing Then</p><p> Set pPoint = m_pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)</p><p> m_pNewEnvelopeFeedback.MoveTo pPoi
114、nt</p><p><b> End If</b></p><p> Case esriGeometryType.esriGeometryPolyline '線</p><p> If Not m_pNewLineFeedback Is Nothing Then</p><p>
115、Set pPoint = m_pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)</p><p> m_pNewLineFeedback.MoveTo pPoint</p><p><b> End If</b></p><p> Case esriGeometryType.esri
116、GeometryPolygon '多邊形</p><p> If Not m_pNewPolygonFeedback Is Nothing Then</p><p> SetpPoint=m_pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)</p><p> m_pNew
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《緩沖區(qū)分析》實驗報告
- arcgis空間疊加分析與緩沖區(qū)分析
- arcgis空間疊加分析與緩沖區(qū)分析
- arcgis緩沖區(qū)分析、疊加分析綜合案例練習
- 三維體數(shù)據(jù)生成及三維緩沖區(qū)分析.pdf
- 緩沖區(qū)機制與政黨治理
- 32662.gs模式下空間數(shù)據(jù)緩沖區(qū)分析關鍵技術研究
- 12屏蔽緩沖區(qū)
- 關于車鉤緩沖裝置畢業(yè)論文
- 氣候緩沖區(qū)的妙用
- 數(shù)組緩沖區(qū)溢出分析和檢測.pdf
- PBS緩沖區(qū)車身路由調(diào)度策略的研究與應用.pdf
- 緩沖區(qū)溢出攻擊原理
- 回收件質(zhì)量不確定條件下的緩沖區(qū)分配問題研究.pdf
- 32706.空間分析中緩沖區(qū)生成算法研究及應用
- 實體三維緩沖區(qū)生成與分析方法研究.pdf
- 24基于緩沖區(qū)溢出問題的攻防實例與分析
- 35871.gis緩沖區(qū)和疊加分析
- 緩沖區(qū)溢出漏洞利用與防御研究.pdf
- 緩沖區(qū)溢出檢測與防護技術改進研究
評論
0/150
提交評論