版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì) 論論 文文 題 目: 緩沖區(qū)分析與應(yīng)用 學(xué) 院: 測繪工學(xué)院 專 業(yè): 地理信息系統(tǒng) 姓 名: 辛帥濤 學(xué) 號: 062409133 指導(dǎo)老師: 張衛(wèi)國 完成時(shí)間: 2013 年 5 月 25 日 目目 錄錄摘摘 要要 .1 1第一章第一章 緒緒 論論 .3 31.1.緩沖區(qū)問題的提出及意義 .31.1.1 緩沖區(qū)分析問題的提出.31.1.2 緩沖區(qū)分析問題的意義.41.2 緩沖區(qū)分析實(shí)現(xiàn)的常用算法.51.2.1 凸角圓弧法原理.51.2.2 角分線法原理.61.2.3 柵格法原理.71.3 論文的主要內(nèi)容 .7第二章第二章 建立空間對象緩沖區(qū)方法建立空間對象緩沖區(qū)方
2、法 .8 82.1 空間對象的數(shù)據(jù)表示.82.1.1 空間數(shù)據(jù)的柵格模型和矢量模型 .82.1.2 柵格數(shù)據(jù)BMP 格式文件說明 .82.2 建立空間對象緩沖區(qū)的原理.122.2.1 空間對象緩沖區(qū)實(shí)現(xiàn)的矢量法原理 .122.2.2 空間對象緩沖區(qū)實(shí)現(xiàn)的柵格法原理 .132.3 基于矢量的空間對象緩沖區(qū)生成算法的引理和概念.14第三章第三章 研究方法和技術(shù)路線研究方法和技術(shù)路線 .20203.1 研究方法.203.2 技術(shù)路線.21第四章第四章 緩沖區(qū)分析的實(shí)現(xiàn)緩沖區(qū)分析的實(shí)現(xiàn) .23234.1 打開工作空間 .234.2.自定義緩沖區(qū) .234.3 生成緩沖區(qū) .284.4 緩沖區(qū)分析 .2
3、84.5 最終實(shí)現(xiàn)的功能 .324.6 基于矢量和柵格的緩沖區(qū)算法比較 .37第五章第五章 總結(jié)總結(jié) .39395.1 結(jié)論.395.2 問題及展望.39參考文獻(xiàn)參考文獻(xiàn) .3838致謝致謝 .4141河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 摘 要 0摘摘 要要 本文對空間對象的緩沖區(qū)分析算法作了說明,討論了分別利用圖形學(xué)方法和圖像處理的形態(tài)學(xué)方法建立地理信息系統(tǒng)中空間對象的緩沖區(qū)算法,并且就兩種算法的異同做出了分析。 在矢量算法中,各類地理要素根據(jù)其空間形態(tài)特征分為點(diǎn)、線、面三類,分別以計(jì)算機(jī)屏幕數(shù)據(jù)的點(diǎn)、線、面圖形對象表示,進(jìn)行緩沖區(qū)分析。在柵格算法中,地理空間被劃分為規(guī)則的小單元(像元) ,空間位
4、置由像元的行、列號表示。以膨脹法原理為基礎(chǔ),進(jìn)行緩沖區(qū)分析。關(guān)鍵字:地理信息系統(tǒng),緩沖區(qū)分析,矢量法,柵格法,膨脹法河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 摘 要 1ABSTRACTABSTRACT This paper illuminates the arithmetic of buffer analysis to spacial object. In this paper two arithmetic are discussed, one is based on the computer graphic technology , the other is based on Mathematical
5、Morphology. Then, the similarities and differences of such two arithmetic are discussed too. In the vector arithmetic, spacial objects are divided into threekinds, point、line、polygon, which are expressed by the graphic object on the computer screen. Buffer analysis is based on such kind of data. In
6、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 expand method of Mathematical Morphology. Keywords: Geographical information system(GIS),buffer analysis, vector method, grid method ,expand meth
7、od.河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第一章 緒 論 2第一章第一章 緒緒 論論1.1.緩沖區(qū)問題的提出及意義緩沖區(qū)問題的提出及意義1.1.1 緩沖區(qū)分析問題的提出緩沖區(qū)分析問題的提出 地理信息系統(tǒng)(Geographic Information System 簡稱 GIS)是一項(xiàng)以計(jì)算機(jī)為基礎(chǔ)的新興技術(shù),圍繞著這項(xiàng)技術(shù)的研究、開發(fā)和應(yīng)用形成了一門交叉性、邊緣性的學(xué)科。從 20 世紀(jì) 60 年代出現(xiàn)至今,只有短短 40 多年的時(shí)間,但是他的發(fā)展非常迅速,已經(jīng)成為多學(xué)科集成并應(yīng)用于多領(lǐng)域的基礎(chǔ)平臺,成為地學(xué)空間信息處理的重要手段和工具。 地理信息系統(tǒng)具有空間數(shù)據(jù)的輸入、存儲(chǔ)、管理、分析和輸出等功能,
8、地理信息系統(tǒng)的主要目的是為了分析空間數(shù)據(jù),以提供空間決策支持信息,因此,空間分析是地理信息系統(tǒng)的主要功能,是核心,是靈魂。 空間分析就是利用計(jì)算機(jī)對數(shù)字地圖進(jìn)行分析,從而獲取和傳輸空間信息。由于空間分析對空間信息(特別是隱含信息)所具有的提取和傳輸功能,它已經(jīng)成為地理信息系統(tǒng)區(qū)別于一般信息系統(tǒng)的功能特征,也成為評價(jià)一個(gè)地理信息系統(tǒng)功能的主要指標(biāo)之一。 緩沖區(qū)分析是地理信息系統(tǒng)最重要和最基本的空間操作功能之一。緩沖區(qū)分析是根據(jù)點(diǎn)、線、面實(shí)體基礎(chǔ),自動(dòng)建立其周圍一定寬度范圍內(nèi)的緩沖區(qū)多邊形實(shí)體,從而實(shí)現(xiàn)空間數(shù)據(jù)在其領(lǐng)域得以擴(kuò)展的信息分析方法。例如,公共設(shè)施(商場、郵局、銀行、醫(yī)院等)的服務(wù)半徑,大
9、型水庫建設(shè)引起的搬遷,都是一個(gè)鄰近度的問題。城市的噪音污染源所影響的一定空間范圍、交通線兩側(cè)所劃定的綠化帶,既可分別描述為點(diǎn)的緩沖區(qū)與線的緩沖區(qū)帶。緩沖區(qū)分析的基本思想是給定一個(gè)空間物體(的集合),確定它(們)的某鄰域,鄰域的大小由鄰域半徑 R 決定。因此物體 Oi 的緩沖區(qū)的定義如下:Bi x : d (x, Oi ) R 即對象 Oi 的半徑為 R 的緩沖區(qū)是全部距 Oi 的距離 d 小于等于 R 的點(diǎn)的集合,d 一般是指最小歐氏距離。 對于多個(gè)對象的集合:河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第一章 緒 論 3 O Oi :i 1, 2, 3,., n其半徑為 R 的緩沖區(qū)是單個(gè)對象的緩沖區(qū)的并
10、,即: n B B1.1.2 緩沖區(qū)分析問題的意義緩沖區(qū)分析問題的意義 緩沖區(qū)信息處理在現(xiàn)實(shí)生活中有廣泛的應(yīng)用,可以從以下幾個(gè)方面看:(1) 緩沖區(qū)分析在生態(tài)環(huán)境影響評價(jià)中的應(yīng)用在特定的時(shí)空環(huán)境里,生態(tài)環(huán)境問題的產(chǎn)生是由于自然、人為條件下各生態(tài)因子綜合作用的結(jié)果,這些生態(tài)因子在不同程度上都具有某種地理含義。地理信息系統(tǒng)是對具有地理含義的因子進(jìn)行統(tǒng)計(jì)、查詢、分析的有力工具。因此,利用地理信息系統(tǒng)的相關(guān)技術(shù)來分析、評價(jià)生態(tài)環(huán)境問題的影響就顯得理所當(dāng)然。目前,在整個(gè)環(huán)境領(lǐng)域,地理信息系統(tǒng)的應(yīng)用得到了蓬勃的發(fā)展,空間數(shù)據(jù)的建立、屬性數(shù)據(jù)的逐步完善、空間數(shù)據(jù)與屬性數(shù)據(jù)的鏈接等為環(huán)境的評價(jià)、管理與規(guī)劃提供
11、了一個(gè)簡單、便捷、明晰的運(yùn)作平臺.隨著生態(tài)環(huán)境問題的出現(xiàn)以及科技的進(jìn)步和人們生態(tài)環(huán)保意識的提高,越來越多的人投向生態(tài)環(huán)境的建設(shè)與整治中或盡量減少對自然生態(tài)環(huán)境的干擾.但人類對生態(tài)環(huán)境的主觀改造以及人類必須進(jìn)行生產(chǎn)活動(dòng)的效果與影響總是具有隱蔽性和動(dòng)態(tài)性的特點(diǎn),其影響范圍常常表現(xiàn)為一個(gè)趨勢面.如何有效、直觀地確定趨勢面亦即影響范圍的大小是生態(tài)環(huán)境影響評價(jià)面對的主要問題,地理信息系統(tǒng)的空間分析功能之一的緩沖區(qū)分析正是對這一趨勢面加以分析的有力工具。例如,在環(huán)境治理時(shí),常在污染的河流周圍劃出一定寬度的范圍表示受到污染的區(qū)域;又如在飛機(jī)場,常根據(jù)健康需要在周圍劃出一定范圍的區(qū)域作為非居住區(qū)等。(2)緩沖
12、區(qū)分析在城市規(guī)劃中的應(yīng)用 城市作為人口集中、規(guī)模龐大、結(jié)構(gòu)復(fù)雜、不斷發(fā)展的動(dòng)態(tài)系統(tǒng),它的發(fā)展變化不僅表現(xiàn)在人口的增加、經(jīng)濟(jì)的發(fā)展和功能的變化上,而且也表現(xiàn)在城市空間結(jié)構(gòu)的變化上。城市空間結(jié)構(gòu)的基本要素是核心、交通網(wǎng)絡(luò)、節(jié)點(diǎn)以及不同土地利用模式形成的面狀區(qū)域。核心的作用無庸置疑,多數(shù)城市的生長都是由核心開始的。交通網(wǎng)絡(luò)則是城市生長的骨架,這里的交通網(wǎng)絡(luò)不僅包含城市內(nèi)部的主干街道,而且包括城市對外交通干線,它往往形成城市的發(fā)展軸。節(jié)點(diǎn)可以是交通網(wǎng)絡(luò)中重要的交叉點(diǎn),也可以是重要的郊區(qū)小城鎮(zhèn)或衛(wèi)星城鎮(zhèn),它們是城市中人流物流能量流和信息流集聚和擴(kuò)散的源地。正是這些基本要素決定了整個(gè)城市的擴(kuò)展。緩沖區(qū)分析
13、又可以稱為空間影響分析,是地理信息系統(tǒng)中定量研究距離因素影響的重要工具。河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第一章 緒 論 4因而進(jìn)行基于重點(diǎn)區(qū)域和交通線的緩沖區(qū)分析,可以定量地描述城市用地?cái)U(kuò)展過程以及空間分布。 例如:在土地評測中,要根據(jù)離開交通線或繁華區(qū)的遠(yuǎn)近,進(jìn)行地價(jià)估算;特定場所的選址如大型超市、公園、療養(yǎng)院要依靠諸如“靠近交通線” 、 “沿河流或?yàn)l臨湖泊” 、 “包含林塊和綠地”等有關(guān)緩沖區(qū)操作。(3)在地理數(shù)據(jù)結(jié)構(gòu)化自動(dòng)處理中的應(yīng)用 地理信息處理的實(shí)質(zhì)是綜合分析與評測,借此賦以地理實(shí)體相應(yīng)重要性,為管理與規(guī)劃決策提供依據(jù)和為它們的多比例顯示奠定基礎(chǔ)。然后,地圖的地理信息的綜合評價(jià)必須在信
14、息結(jié)構(gòu)化的基礎(chǔ)上進(jìn)行,對于簡單的數(shù)字化面條數(shù)據(jù)是難以進(jìn)行有效的分析和處理的。例如,河網(wǎng)樹結(jié)構(gòu),地形線(山脊線與谷地線)的結(jié)構(gòu)化(樹結(jié)構(gòu)的自動(dòng)建立)都在遞歸地執(zhí)行緩沖區(qū)操作。邊防城鎮(zhèn)、沿海港口和地形等信息有其獨(dú)特的不言而喻的重要性,這些都是借助緩沖區(qū)操作而實(shí)現(xiàn)的。 綜上所述,緩沖區(qū)分析在現(xiàn)實(shí)生活中有如此廣泛的應(yīng)用,所以,對緩沖區(qū)算法的研究非常的有必要。1.2 緩沖區(qū)分析實(shí)現(xiàn)的常用算法緩沖區(qū)分析實(shí)現(xiàn)的常用算法 緩沖區(qū)生成矢量算法,特別是線緩沖區(qū)的生成算法,常見的有凸角圓弧法和角平分線法。凸角圓弧法是逐個(gè)求得每個(gè)線段單獨(dú)的緩沖區(qū),然后用多邊形疊質(zhì)算法依次合并。算法所生成的緩沖區(qū)邊界,軸線轉(zhuǎn)角尖銳的轉(zhuǎn)
15、折點(diǎn)的平行線交點(diǎn)隨緩沖距的增大將會(huì)迅速遠(yuǎn)離軸線,這就會(huì)出現(xiàn)尖角和凹陷的失真現(xiàn)象。角平分線法由畫逐個(gè)線段的簡單平行線,尖角平滑矯正和自相交處理三步構(gòu)成。角平分線的缺點(diǎn)是難以最大限度的保證平行曲線的等寬性。1.2.1 凸角圓弧法原理凸角圓弧法原理在軸線首末點(diǎn)處,作軸線的垂線并按雙線或緩沖區(qū)半寬 E 截出左右邊線的起迄點(diǎn);在軸線的其它各個(gè)轉(zhuǎn)折點(diǎn)上,首先判斷該點(diǎn)的凸凹特性,在凸側(cè)用圓弧彌合,而在凹側(cè)用與該點(diǎn)所關(guān)聯(lián)的前后兩鄰邊距軸線的偏移量為 E 的兩平行線的交點(diǎn)來生成對應(yīng)頂點(diǎn)(如下圖) 。由于在凸側(cè)用圓弧彌合,使凸側(cè)平行邊線與軸線等寬。而在凹側(cè),平行邊線相交在角分線上。河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第
16、一章 緒 論 5圖 1.1 凸角圓弧法1.2.2 角分線法原理角分線法原理 在軸線首末點(diǎn)處,作軸線的垂線并按雙線或緩沖區(qū)半寬 E 截出左右邊線的起迄點(diǎn);在軸線的其它各個(gè)轉(zhuǎn)折點(diǎn)上,用與該點(diǎn)所關(guān)聯(lián)的前后兩鄰邊距軸線的偏移量為 E 的兩平行線的交點(diǎn)來生成兩平行邊線的對應(yīng)頂點(diǎn)。如圖 1.2圖 1.2 角平分線法河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第一章 緒 論 61.2.3 柵格法原理柵格法原理 柵格方法又叫點(diǎn)陣法,它將點(diǎn)、線、面矢量數(shù)據(jù)轉(zhuǎn)化為柵格數(shù)據(jù),進(jìn)行像元加粗,然后作邊緣提?。辉谠砩媳容^簡單,容易實(shí)現(xiàn),但受精度的限制;并且內(nèi)存開銷大,所能處理的數(shù)據(jù)量受到機(jī)器硬件的限制。1.3 論文的主要內(nèi)容論文的主
17、要內(nèi)容 本論文對建立空間對象的緩沖區(qū)的矢量算法和柵格算法進(jìn)行分析,探討了這兩種建立空間對象緩沖區(qū)算法的異同和應(yīng)用范圍。論文結(jié)構(gòu)如下:(1)空間對象緩沖區(qū)的實(shí)現(xiàn)(2)建立點(diǎn)、線、面空間對象緩沖區(qū)的矢量方法(3)建立點(diǎn)、線、面空間對象緩沖區(qū)的柵格方法(4)建立點(diǎn)、線、面空間對象緩沖區(qū)矢量、柵格方法的比較分析河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法7第二章第二章 建立空間對象緩沖區(qū)方法建立空間對象緩沖區(qū)方法 2.1 空間對象的數(shù)據(jù)表示空間對象的數(shù)據(jù)表示 2.1.1 空間數(shù)據(jù)的柵格模型和矢量模型空間數(shù)據(jù)的柵格模型和矢量模型 在柵格模型中,地理空間被劃分為規(guī)則的小單元(像元) ,空間位
18、置由像元的行、列號表示。例如:一條道路由其值為道路編碼值的一系列相聯(lián)的像元表示,要從數(shù)據(jù)庫中刪除這條道路,則必須將所有有關(guān)像元的值變成該道路領(lǐng)域的背景值。柵格數(shù)據(jù)模型的設(shè)計(jì)思想是將地理空間看成一個(gè)連續(xù)的整體,在這個(gè)空間中處處有定義。在本畢業(yè)設(shè)計(jì)中柵格法緩沖區(qū)分析針對的是二值化后的影像數(shù)據(jù)。其格式為*.bmp。 矢量模型將地理空間看成是一個(gè)空間區(qū)域,地理要素存在其間。在矢量模型中,各類地理要素根據(jù)其空間形態(tài)特征分為點(diǎn)、線、面三類。點(diǎn)狀要素用坐標(biāo)點(diǎn)對表示其位置;線狀要素用其中心軸線上的抽樣點(diǎn)坐標(biāo)串表示其位置和形狀;面狀要素用范圍輪廓線上的抽樣點(diǎn)坐標(biāo)串表示其位置和范圍。在本畢業(yè)設(shè)計(jì)中矢量法緩沖區(qū)分析
19、對象是利用計(jì)算機(jī)屏幕數(shù)據(jù)的點(diǎn)、線、面圖形對象。 2.1.2 柵格數(shù)據(jù)柵格數(shù)據(jù)BMP 格式文件說明格式文件說明 一個(gè) BMP 文件大體上分成如下 4 個(gè)部分:BITMAPFILEHEADER(位圖文件頭) 、BITMAPINFOHEADER(位圖信息頭) 、Palette(調(diào)色版) 、DIB Pixels(DIB 圖像數(shù)據(jù)) 。 1)位圖文件頭 BITMAPFILEHEADER 它的結(jié)構(gòu)如下: typedef struct tagBITMAPFILEHEADER WORD bfType; DWORD bfSize; 河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法8WORD bfRes
20、erved1; WORD bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER; 該結(jié)構(gòu)的長度是固定的,為 14 個(gè)字節(jié),各參數(shù)說明如下: bfType:指定文件類型,必須是 0 x424D,即字符串“BM” 。也就是說所有的“.bmp”文件的頭兩個(gè)字節(jié)都是“BM”bfSize:指定文件大小; bfReserved1、bfReserved2:為保留字,不用考慮; bfOffBits:為文件頭到實(shí)際的位圖數(shù)據(jù)的偏移字節(jié)數(shù),也就是前三部分長度之和。 2)位圖信息頭 BITMAPINFOHEADER 其結(jié)構(gòu)如下
21、: typedef struct tagBITMAPINFOHEADER DWORD bfSize;LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPersPerMeter; DWORD biClrUsed; DWORD biClrImportant; 河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法9BITMAPINFOHEADER, FAR *LPBITMAPINFOH
22、EADER; 該結(jié)構(gòu)的長度為 40 個(gè)節(jié),各參數(shù)的意義說明如下: biSize:指定這個(gè)結(jié)構(gòu)的大小,為 40 個(gè)字節(jié); biWidth:指定圖像的寬度,單位是像素; biHeight:指定圖像的高度,單位是像素; biPlanes:必須是 1; biBitCount:指定表示顏色要用到的位數(shù),常用的值 1(黑白)8(256 色) 、24(真彩色) ; biCompression:指定位圖是否壓縮,有效值為 BI_RGB、BI_RLE4、BI_RLE8。其中 BI_RGB 為不壓縮的情況。 biSize Im age = biWidth biHeightbiSizeImage;指定實(shí)際的位圖數(shù)據(jù)
23、占用的字節(jié)數(shù)??梢杂孟旅娴墓接?jì)算: 需要注意的是:上述公式中的 biWidth 不一定總等于 biWidth,biWidth 必須是 4 的整數(shù)倍,表示大于或等于 biWidth 的離 4 最近的整倍數(shù)。 biXPelsPerMeter:指定目標(biāo)設(shè)備的水平分辨率,單位是每米的像素個(gè)數(shù); biYPelsPerMeter;指定目標(biāo)設(shè)備的垂直分辨率,單位是每米的像素個(gè)數(shù); biClrUsed:指定本圖像實(shí)際用到的顏色數(shù),如果該值為 0 則用到的顏色數(shù)為 2 的 biBitCount 次冪; biClrImportant:指定本圖像中重要的顏色數(shù),如果該值為零,則認(rèn)為所用的顏色都是重要的。 3)al
24、ette(調(diào)色板) 調(diào)色板實(shí)際上是一個(gè)數(shù)組,共有 biClrUsed 個(gè)元素(如果該值為 0,則為 2的 biBitCount 次冪) 。數(shù)組中每個(gè)元素的類型為一個(gè) RGBQUAD 結(jié)構(gòu),占 4 個(gè)字節(jié)。河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法10結(jié)構(gòu)定義如下: typedef struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; RGBQUAD; 注意:有些位圖,比如真彩色圖,沒有調(diào)色板。他們的位圖信息頭BITMAPINFOHEADER 后直接是 DIB 數(shù)據(jù)。 4)DIB
25、 圖像數(shù)據(jù) 它分兩種情況:對于用到調(diào)色板的位圖,圖像數(shù)據(jù)就是該像素顏色在調(diào)色板中的索引值;對于真彩色圖,圖像數(shù)據(jù)就是實(shí)際的 R、G、B 值。 對于 2 色位圖,用 1 位就可以表示該像素的顏色,因此一個(gè)字節(jié)可以表示 8個(gè)像素; 對于 16 色位圖,用 4 位可以表示一個(gè)像素的顏色,所以 1 個(gè)字節(jié)可以表示2 個(gè)像素; 對于 256 色位圖,一個(gè)字節(jié)剛好表示一個(gè)像素; 對于真彩色圖,3 個(gè)字節(jié)才能表示 1 個(gè)像素 注意:1. 每一行的字節(jié)數(shù)必須是 4 的整倍數(shù),如果不是,則需要補(bǔ)齊; 2. 圖像數(shù)據(jù)是按照從上到下、從左到右的順序存儲(chǔ);我們最先讀到的是圖像最下面一行的左邊第一個(gè)像素,然后是左邊第二
26、個(gè)像素接下來是倒數(shù)第二行左邊第一個(gè)像素,左第二個(gè)像素依此類推,最后得到的是最上面一行的最后一個(gè)像素。 在 dibapi.h 和 dibapi.cpp 中有處理*.bmp 格式文件的常用的函數(shù) 如:HDIB ReadDIBFile(CFile& file)函數(shù)的參數(shù) Cfile &file 為文件名;該函河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法11數(shù)的返回值是文件中的圖像數(shù)據(jù)的句柄。 函數(shù)原型 BOOL WINAPI SaveDIB(HDIB hDib, CFile& file)的第一個(gè)參數(shù) hDIB 表示保存圖像數(shù)據(jù)的內(nèi)存區(qū)域的句柄,第二個(gè)參數(shù) CFile& file 為保存
27、圖像的文件名。另外,還有查找位圖像素的函數(shù) LPSTR WINAPI FindDIBBits(LPSTR lpbi),用于計(jì)算 DIB 位圖圖像數(shù)據(jù)的地址,返回一個(gè)指向位圖圖像數(shù)據(jù)起始位置的指針。 2.22.2 建立空間對象緩沖區(qū)的原理建立空間對象緩沖區(qū)的原理 2.2.12.2.1 空間對象緩沖區(qū)實(shí)現(xiàn)的矢量法原理空間對象緩沖區(qū)實(shí)現(xiàn)的矢量法原理 (1)點(diǎn)目標(biāo) P 的緩沖區(qū):以 P 為圓心,以緩沖距 E 為半徑作圓。 圖 2.1 點(diǎn)目標(biāo)的矢量法緩沖區(qū)分析 (2)線目標(biāo) L 的緩沖區(qū):以 L 為軸線,以緩沖距 E 為平移量向兩側(cè)作平行曲(折)線。在軸線兩端構(gòu)造兩個(gè)半圓弧,最后形成圓頭(蠶形)緩沖區(qū)。
28、 河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法12 圖 2.2 線目標(biāo)的矢量法緩沖區(qū)分析 (3)面目標(biāo) A 的緩沖區(qū):以 A 的邊界線 LA 為軸線,以緩沖距 E 為平移量向邊界線的外側(cè)作平行曲(折)線。 圖 2.3 面目標(biāo)的矢量法緩沖區(qū)分析 2.2.2 空間對象緩沖區(qū)實(shí)現(xiàn)的柵格法原理空間對象緩沖區(qū)實(shí)現(xiàn)的柵格法原理 本畢業(yè)設(shè)計(jì)是基于膨脹算法的緩沖區(qū)分析。從數(shù)學(xué)的角度看,緩沖區(qū)分析的基本思想是給定一個(gè)空間對象或集合,確定它們的領(lǐng)域。 數(shù)學(xué)形態(tài)學(xué)是一門新興的圖像分析學(xué)科,其基本思想是:利用一個(gè)結(jié)構(gòu)元素去探測一個(gè)圖像,看是否能夠?qū)⑦@個(gè)結(jié)構(gòu)元素很好地填放在圖像的內(nèi)部,同時(shí)驗(yàn)證填放結(jié)構(gòu)元素
29、的方法是否有效。 圖學(xué)形態(tài)學(xué)中的基本運(yùn)算有膨脹算法,其定義為: AB=a: (-B+a) A 上式表示把結(jié)構(gòu)元素 B 平移 a 后得到 Ba,若 Ba 擊中 A(即 Ba 與 A 的交集不為河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法13空) ,記下這個(gè) a 點(diǎn)。所有滿足上述條件的 a 點(diǎn)組成的集合稱做 A 被 B 膨脹的結(jié)果。 圖 2.4 中 A 表示的大長方形是被處理的對象,B 所示的小正方形是結(jié)構(gòu)元素,原點(diǎn)指定為 B 的中心。不難知道,對于任意一個(gè)在陰影部分的點(diǎn) a,Ba 擊中 A,所以 A 被 B 膨脹的結(jié)果就是那個(gè)陰影部分。陰影部分包括 A 的所有范圍,就像 A膨脹了一
30、圈似的,這就是將這種算法稱為膨脹的原因。圖 2.4 膨脹法原理圖 空間對象緩沖區(qū)的膨脹生成算法原理: 河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法14(1)點(diǎn)目標(biāo) P 的緩沖區(qū):以 P 為點(diǎn)生成元,借緩沖距 E 規(guī)定像元加粗的結(jié)構(gòu)元 素,然后進(jìn)行像元的膨脹。 (2)線目標(biāo) L 的緩沖區(qū):以 L 為線生成元,借緩沖距 E 規(guī)定像元加粗的結(jié)構(gòu)元 素,然后進(jìn)行像元膨脹。(3)面目標(biāo) A 的緩沖區(qū):以 A 的邊界線 LA 為軸線,借助緩沖距 E 規(guī)定像元加粗的結(jié)構(gòu)元素,并進(jìn)行像元膨脹。2.32.3 基于矢量的空間對象緩沖區(qū)生成算法的引理和概念基于矢量的空間對象緩沖區(qū)生成算法的引理和概念
31、空間信息系統(tǒng)中,空間目標(biāo)分為點(diǎn)目標(biāo)、線目標(biāo)、面目標(biāo),以及點(diǎn)、線、面目標(biāo)任意組合而成的復(fù)雜目標(biāo)??臻g目標(biāo)的緩沖區(qū)包括點(diǎn)目標(biāo)緩沖區(qū)、線目標(biāo)緩沖區(qū)、面目標(biāo)緩沖區(qū)。點(diǎn)目標(biāo)的緩沖區(qū),是圍繞該目標(biāo)的半徑為緩沖距的圓周所包圍的區(qū)域;線目標(biāo)的緩沖區(qū),是沿線目標(biāo)的兩側(cè)距離不超過緩沖距的點(diǎn)組成的區(qū)域;面目標(biāo)的緩沖區(qū),是沿該目標(biāo)邊界內(nèi)側(cè)或外側(cè)距離不超過緩沖距的點(diǎn)組成的區(qū)域。 為討論方便,首先引入下面幾個(gè)引理和概念: 引理一 當(dāng)沿著簡單多邊形的頂點(diǎn)串方向走過所有有向邊時(shí),如果多邊形的頂點(diǎn)以逆時(shí)針方向串連起來,則我們的左側(cè)始終在多邊形的內(nèi)部;反之,如果多邊形的頂點(diǎn)以順時(shí)針方向串連起來,則我們的右側(cè)始終在多邊形的內(nèi)部。
32、引理二 當(dāng)沿著簡單多邊形的任一條有向邊從起點(diǎn)走向終點(diǎn)時(shí),如果我們的左側(cè)始終在多邊形的內(nèi)部,則多邊形的頂點(diǎn)以逆時(shí)針方向串連起來;反之,如果我們的右側(cè)始終在多邊形的內(nèi)部,則多邊形的頂點(diǎn)以順時(shí)針方向串連起來。 定義一 如果多邊形的頂點(diǎn)以逆時(shí)針方向串連起來,則稱此多邊形的方向?yàn)檎?;如果多邊形的頂點(diǎn)以順時(shí)針方向串連起來,則稱此多邊形的方向?yàn)樨?fù)向。 正多邊形 負(fù)多邊 形河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法15圖圖 2.52.5 正負(fù)多邊形的定義 定義二 在簡單多邊形任意頂點(diǎn)前后兩個(gè)矢量形成的兩個(gè)角度中,位于多邊形內(nèi)的角度稱為該頂點(diǎn)的內(nèi)角,位于多邊形外的角度稱為該頂點(diǎn)的外角2.42.
33、4 線狀目標(biāo)緩沖區(qū)的生成方法線狀目標(biāo)緩沖區(qū)的生成方法 線狀目標(biāo)緩沖區(qū)的生成是點(diǎn)、線、面三種基本空間矢量要素緩沖區(qū)生成的關(guān)鍵和基礎(chǔ)。在此節(jié)介紹了本次畢業(yè)設(shè)計(jì)實(shí)現(xiàn)線狀目標(biāo)緩沖區(qū)自動(dòng)生成的矢量算法。 線狀目標(biāo)緩沖區(qū)總的生成分兩個(gè)階段,即單個(gè)線狀緩沖區(qū)多邊形的獨(dú)立生成過程和多個(gè)線狀目標(biāo)緩沖區(qū)多邊形間的重疊合并過程。1、獨(dú)立線狀目標(biāo)緩沖區(qū)的自動(dòng)生成 在基于矢量數(shù)據(jù)格式的地理信息系統(tǒng)中,任何線狀目標(biāo)的空間形態(tài)主要是通過“折線”的方式來表示的,因此,所謂的線狀目標(biāo)緩沖區(qū)的生成實(shí)際上等價(jià)于“折線”緩沖區(qū)的生成問題。通過分析折線的形態(tài)特征會(huì)發(fā)現(xiàn)任何形狀的折線都是由折線端點(diǎn)、折線上的線段和線段間的拐點(diǎn)三個(gè)基本要素
34、所構(gòu)成。顯然,要分析折線緩沖區(qū)的生成算法,必需從構(gòu)成折線的三要素著眼。下面分別介紹折線端點(diǎn)、折線上的線段和線段間的拐點(diǎn)的緩沖區(qū)生成算法,然后在將它們組合在一起形成任意折線等距緩沖區(qū)的自動(dòng)生成算法。 (1)線段緩沖區(qū)的生成 任意方向線段(原線段)的緩沖區(qū)線段應(yīng)與原線段構(gòu)成一個(gè)矩形。圖 3.2 中 CD 和 EF 兩條線段代表元線段 AB 前進(jìn)方向(起始點(diǎn)到結(jié)束點(diǎn))的左右兩條緩緩沖區(qū)線段 F F C C A A E E 圖 2.6 線段緩沖區(qū)的生成河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法16設(shè)原線段的起始點(diǎn) A 和結(jié)束點(diǎn) B 的坐標(biāo)分別為(Xa,Ya)和(Xb,Yb),緩沖區(qū)距離
35、為 d,則線段 AB 的左緩沖區(qū)線段 CD 的端點(diǎn)坐標(biāo)(Xc,Yc)(Xd,Yd)和右緩沖區(qū)線段 EF 的端點(diǎn)坐標(biāo)(Xe,Ye)(Xf,Yf)的計(jì)算公式應(yīng)分別為1)當(dāng) Ya Yb 0 時(shí):Xc = Xa + d k 1+ k Xd = 2 Xa Xc Yc = Xd d 1 + k Yd = 2 Ya Yc Xe = Xb + d k 1+ k Xf = 2 Xb XcYe = Xb d 1 + k Yf = 2 Yb Yc2)當(dāng) Ya Yb 0 時(shí): Xc = Xa d k 1+ k Xd = 2 Xa Xc Ye = Xd + d 1 + k Yd = 2 Ya Yc Xe = Xb d
36、k 1+ k Xf = 2 Xb XeYe = Xb d k 1 + k Yf = 2 Yb Ye 其中:k 為線段 AB 直線的斜率,k=(Yb Ya ) (Xb Xa (2) 折線端點(diǎn)緩沖區(qū)的生成 理論上講,折線端點(diǎn)的緩沖區(qū)應(yīng)該是一個(gè)半圓弧。其原心在折線的端點(diǎn)上,連接半圓弧兩個(gè)端點(diǎn)的直徑應(yīng)垂直于折線的端點(diǎn)線段,如圖 3.3 所示。但是由于整條折線的緩沖區(qū)應(yīng)該是一個(gè)閉合多邊形,所以折線端點(diǎn)出的緩沖區(qū)實(shí)際上只能是一個(gè)對上述半圓弧具有一定擬和精度的正 n 邊形。河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法17圖 2.7 折線端點(diǎn)的緩沖區(qū)生成在圖 2.7 中,設(shè)待生成緩沖區(qū)的折線端點(diǎn)
37、 A(Xa,Ya)其右側(cè)緩沖區(qū)線段端點(diǎn)E(Xe,Ye),以 A 為圓心,d 為半徑順時(shí)針轉(zhuǎn) 180 得半圓弧 EC。 (3)折線拐點(diǎn)緩沖區(qū)的生成 所謂折線上的拐點(diǎn)是指折線上兩條相鄰線段的連接處。顯然,構(gòu)成拐點(diǎn)的兩條相鄰線段或者在同一條直線上或者不在同一條直線上。 當(dāng)兩條直線在同一條直線上時(shí),根據(jù)兩條線段生成的同側(cè)緩沖區(qū)也必然在同一條直線上(這里假設(shè)構(gòu)成拐點(diǎn)的兩條線段的緩沖區(qū)距離相等) 。此時(shí)沒有必要再生成拐點(diǎn)處的緩沖區(qū)。 當(dāng)構(gòu)成拐點(diǎn)的兩條線段不再同一條直線上時(shí),在折線的拐點(diǎn)處就形成兩個(gè)角,其中一個(gè)角必然大于 180 而另一個(gè)角則小于 180 。把大于 180 的角稱為外角,而小于 180 的角
38、稱為內(nèi)角。在內(nèi)角側(cè)不必生成拐點(diǎn)緩沖區(qū),與此相反,在外角側(cè),構(gòu)成拐點(diǎn)的兩條線段外角側(cè)緩沖區(qū)線段不相交。而是形成一個(gè)扇形區(qū)圓?。▓A弧圓心在拐點(diǎn)上,圓弧半徑等于緩沖區(qū)的距離) 。折線的端點(diǎn)為構(gòu)成拐點(diǎn)的兩條線段外角側(cè)緩沖區(qū)線段靠近拐點(diǎn)處的兩個(gè)端點(diǎn),圖 2.8 中的 D、D兩點(diǎn)。 圖 2.8 折線拐點(diǎn)緩沖區(qū)的生成河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法18(4)任意折線等距緩沖區(qū)的自動(dòng)生成算法 任意不自相交折線等距緩沖區(qū)的自動(dòng)生成算法 步驟 1:按照折線的數(shù)字化方向,從折線的第一條線段開始,先生成折線起始端點(diǎn)的半圓弧緩沖區(qū),然后再第一條線段的左側(cè)生成該線段的緩沖區(qū)線段。設(shè)第一條線段為
39、i 線段。 步驟 2:判斷 i+1 線段相對當(dāng)前 i 線段的走向(左拐、右拐或在當(dāng)前 i 線段的延長線上三種情況) 。如果 i+1 線段的走向?yàn)樽蠊栈蛟诋?dāng)前 i 線段的延長線上,則在當(dāng)前 i 線段的左側(cè)只生成其相應(yīng)的平行緩沖區(qū)線段。否則,除了要生成 當(dāng)前線段 i 的平行緩沖區(qū)線段外,還要生成拐點(diǎn)的弧形緩沖區(qū)折線。 步驟 3:將新生成的緩沖區(qū)邊界線與已經(jīng)生成的緩沖區(qū)邊界線進(jìn)行相交計(jì)算。如果新生成的緩沖區(qū)邊界線與已生成的緩沖區(qū)邊界線間沒有或只有一個(gè)交點(diǎn),則轉(zhuǎn)入步驟 5;否則,說明緩沖區(qū)邊界線出現(xiàn)了自相交現(xiàn)象,應(yīng)該進(jìn)行自相交處理,轉(zhuǎn)入步驟 4。 步驟 4:確定新舊緩沖區(qū)邊界線間的每個(gè)交點(diǎn)的特性。最靠
40、近就緩沖區(qū)邊界線上最后線段的交點(diǎn)為新舊緩沖區(qū)邊界線間的正常交點(diǎn),其他交點(diǎn)為緩沖區(qū)自相交的交點(diǎn)。當(dāng)新舊緩沖區(qū)邊界線間有兩個(gè)交點(diǎn)時(shí),應(yīng)該設(shè)置一個(gè)標(biāo)志變量用語標(biāo)志新緩沖區(qū)邊界線是進(jìn)入已有緩沖區(qū)域的點(diǎn)稱為“交疊開始點(diǎn)” ,而新緩沖區(qū)邊界線走出已有緩沖區(qū)域的點(diǎn)稱為“交疊結(jié)束點(diǎn)” 。在交疊開始點(diǎn)和交疊結(jié)束點(diǎn)之間必然存在的兩條緩沖區(qū)邊界線就是自相交處理中應(yīng)該刪掉的線。此外,應(yīng)對閉合于交疊開始點(diǎn)的閉合緩沖區(qū)進(jìn)行特殊的標(biāo)記,因?yàn)榇碎]合緩沖區(qū)圍成的區(qū)域并不是所要的緩沖區(qū)域,而恰恰是非緩沖區(qū)區(qū)域。本文將緩沖區(qū)在閉合曲線內(nèi)部的緩沖區(qū)多邊形稱為正多邊形,而緩沖區(qū)在閉合曲線外側(cè)的緩沖區(qū)多邊形被稱為負(fù)多邊形。 步驟 5:判
41、斷當(dāng)前線段是否為折線的最后一條線段。如果當(dāng)前線段不是折線的最后線段,則將 i 加 1 后返回到步驟 2,如果當(dāng)前線段是折線的最后線段,則結(jié)束緩沖區(qū)生成計(jì)算。河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第二章建立空間對象緩沖區(qū)方法19第三章第三章 研究方法和技術(shù)路線研究方法和技術(shù)路線 本章主要介紹,基于 ArcEngine 緩沖區(qū)分析用到的軟件,其中 Microsoft Visual Basic 是一款使用面非常廣的編程語言,比較適合編程的初學(xué)者使用。ArcEngine 是Arcgis9 的系列產(chǎn)品,是基于核心組件庫 ArcObject 搭建的。3.13.1 研究方法研究方法(1)文獻(xiàn)搜集法:搜集空間分析的方
42、案設(shè)計(jì)、需求預(yù)測等相關(guān)期刊專著以及網(wǎng)河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第三章 研究方法和技術(shù)路線20絡(luò)文獻(xiàn),對資料進(jìn)行歸納、整理、分類、分析,得出相關(guān)的研究成果,為本論文的研究奠定理論基礎(chǔ)。(2)系統(tǒng)分析法:在整個(gè)項(xiàng)目研究過程中,始終貫徹以理論知識為基礎(chǔ),以社會(huì)實(shí)踐為根本,進(jìn)行市場調(diào)研分析,以此對本論文進(jìn)行布局、設(shè)計(jì),保證本論文體系結(jié)構(gòu)的邏輯性、科學(xué)性、可行性。 (3)模擬法(模型方法):模擬法是先依照原型的主要特征,創(chuàng)設(shè)一個(gè)相似的模型,然后通過模型來間接研究原型的一種形容方法。根據(jù)模型和原型之間的相似關(guān)系,模擬法可分為物理模擬和數(shù)學(xué)模擬兩種 (4)信息研究方法 :信息研究方法是利用信息來研究系統(tǒng)
43、功能的一種科學(xué)研究方法。美國數(shù)學(xué)、通訊工程師、生理學(xué)家維納認(rèn)為,客觀世界有一種普遍的聯(lián)系,即信息聯(lián)系。當(dāng)前,正處在“信息革命”的新時(shí)代,有大量的信息資源,可以開發(fā)利用。信息方法就是根據(jù)信息論、系統(tǒng)論、控制論的原理,通過對信息的收集、傳遞、加工和整理獲得知識,并應(yīng)用于實(shí)踐,以實(shí)現(xiàn)新的目標(biāo)。信息方法是一種新的科研方法,它以信息來研究系統(tǒng)功能,揭示事物的更深一層次的規(guī)律,幫助人們提高和掌握運(yùn)用規(guī)律的能力。供基本的面向?qū)ο笾С帧R驗(yàn)樵絹碓蕉嘟M建的出現(xiàn),程序員可以選用自己需要的擴(kuò)展庫。和有些語言不一樣,VB 對大小寫不敏感,但是能自動(dòng)轉(zhuǎn)換關(guān)鍵詞到標(biāo)準(zhǔn)的大小寫狀態(tài),以及強(qiáng)制使得符號表入口的實(shí)體的變量名稱遵
44、循書寫規(guī)則。默認(rèn)情況下字符串的比較是對大小寫敏感的,但是可以關(guān)閉這個(gè)功能。VB 使得大量的外界控件有了自己的生存空間。大量的第三方控件針對 VB 提供。VB 也提供了建立、使用和重用這些控件的方法,但是由于語言問題,從一個(gè)應(yīng)用程序創(chuàng)建另外一個(gè)并不簡單。3.2 技術(shù)路線技術(shù)路線本文的主要研究技術(shù)路線見圖提 出 課 題研 究 現(xiàn) 狀理 論 基 礎(chǔ)研 究 分 析方 案 設(shè) 計(jì)總 結(jié)緒 論方 案 設(shè) 計(jì)需 求 預(yù) 測常 用 算 法需 求 預(yù) 測 模 型研究結(jié)論及改進(jìn)方向緩沖區(qū)研究現(xiàn)狀需 求河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第三章 研究方法和技術(shù)路線21圖 3.1 設(shè)計(jì)流程圖河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第
45、三章 研究方法和技術(shù)路線22本文程序流程圖圖 3.2 程序?qū)崿F(xiàn)流程圖 河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)23第第 4 章章 緩沖區(qū)分析的實(shí)現(xiàn)緩沖區(qū)分析的實(shí)現(xiàn) 本章是文章的核心部分,將介紹利用湖北省交通路網(wǎng)的網(wǎng)絡(luò)數(shù)據(jù)集,以ArcEngine 為平臺并通過 VB6.0 編寫程序來實(shí)現(xiàn)緩沖區(qū)分析。文中將給出主要的代碼及相關(guān)說明,并在最后貼出運(yùn)行效果圖。 4.1 打開工作空間打開工作空間 新建一個(gè) ShapefileWorkspaceFactory 對象,不同類型的數(shù)據(jù)庫使用不同的工作空間對象 Dim pWorkspaceFactory As IWorkspaceFactory S
46、et pWorkspaceFactory = New ShapefileWorkspaceFactory Set OpenWorkspace = pWorkspaceFactory.OpenFromFile(strGDBName, 0) 使用 shapefile 的空間對象連接到 shapefile 數(shù)據(jù)庫4.2.自定義緩沖區(qū)自定義緩沖區(qū) 要實(shí)現(xiàn)在地圖面上拉框、拉多邊形、拉多義線等,只需要使用 MapControl 的Track 系列方法(TrackLine,TrackPolygon 等)就很容易獲得要做緩沖區(qū)運(yùn)算的圖形,這點(diǎn)已經(jīng)在空間查詢部分進(jìn)行了描述。本例使用了派生自 IDisplayFe
47、edback 接口的系列對象,即 ArcEngine 中的 FeedBack 對象,目的是讓讀者能夠接觸到更多的ArcEngine 對象,體會(huì) ArcEngine 開發(fā)的靈活性。在 ArcEngine 中所有的 FeedBack對象(近 30 個(gè))都實(shí)現(xiàn)了 IDisplayFeedBack 接口,在本例中要使用NewLineFeedBack、NewEnvelopeFeedBack 和 NewPolygonFeedback 三個(gè)對象來創(chuàng)建多義線、矩形和任意多邊形。創(chuàng)建用來做緩沖區(qū)的圖形的過程是:用戶在 MapControl上點(diǎn)下鼠標(biāo)(MouseDown) ,標(biāo)志圖形創(chuàng)建的開始,對于點(diǎn)、拉框和選擇
48、要素這三種方式,當(dāng)發(fā)生 MouseUp 的時(shí)候,標(biāo)志動(dòng)作的結(jié)束或圖形創(chuàng)建完畢,對于多義線和多邊形則由于要放生多個(gè) MouseDown 事件,其以 DoubleClick 標(biāo)志圖形的創(chuàng)建結(jié)束,河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)24在 DoubleClick 事件被觸發(fā)之前所發(fā)生的所有 MouseDown、MouseUp、MouseMove 事件用來創(chuàng)建多義線或多邊形的中間結(jié)點(diǎn)。 該例子還是以實(shí)現(xiàn) ICommand 和 ITool 接口的方法來完成操作,建立的 Class Module 為 clsDrawGeometry。 Class Name:clsDrawGeometry
49、ImplementsImplements esriSystemUI.IToolImplements esriSystemUI.ICommandEventPublic Event EndDraw(ByVal EndDraw As Boolean) EndDraw 事件在圖形被繪制完畢時(shí)觸發(fā),其作用是留給調(diào)用的它的對象進(jìn)行空間分析。 下面給出 MouseDown、MouseMove、MouseUp 和 DoubleClick 四個(gè)事件的所有代碼。Private Sub ITool_OnMouseDown(ByVal button As Long, ByVal shift As Long, ByVa
50、l X _ As Long, ByVal Y As Long) 根據(jù)類型來啟動(dòng)不同的繪制對象Setm_pPoint=m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)Select Case m_DrawType 是點(diǎn)的時(shí)候直接獲得該點(diǎn) Case esriGeometryType.esriGeometryPoint Set m_pGeometry = m_pPoint RaiseEvent EndDraw(True) Case esriGeometryType.esriGeometryEnvelope 矩形拉框 I
51、f m_pNewEnvelopeFeedback Is Nothing Then 定義一個(gè)矩形 feedback,模擬拉框 Set m_pNewEnvelopeFeedback = New NewEnvelopeFeedback Set m_pNewEnvelopeFeedback.Display = m_pScreenDisplay m_pNewEnvelopeFeedback.Start m_pPoint河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)25 End If Case esriGeometryType.esriGeometryPolyline 線 If m_pNewLin
52、eFeedback Is Nothing Then Set m_pNewLineFeedback = New NewLineFeedback Set m_pNewLineFeedback.Display = m_pScreenDisplay m_pNewLineFeedback.Start m_pPoint Else 在用戶沒有雙擊前,繼續(xù)畫 m_pNewLineFeedback.AddPoint m_pPoint End If Case esriGeometryType.esriGeometryPolygon If m_pNewPolygonFeedback Is Nothing Then
53、Set m_pNewPolygonFeedback = New NewPolygonFeedback Set m_pNewPolygonFeedback.Display = m_pScreenDisplay m_pNewPolygonFeedback.Start m_pPoint Else 在用戶沒有雙擊前,繼續(xù)畫 m_pNewPolygonFeedback.AddPoint m_pPoint End If Case 1111 要素緩沖 Dim pPt As IPoint Dim pGeo As IGeometry Dim pMapCtrl As MapControl Dim pFeatLyr
54、 As IFeatureLayer Dim pFSelection As IFeatureSelection Dim pFilter As ISpatialFilter Dim pTopo As ITopologicalOperator Dim i As Integer, Count As Integer河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)26 Set pMapCtrl = m_pHook.hook Set pPt = pMapCtrl.ToMapPoint(X, Y) Set pTopo = pPt Count = pMapCtrl.LayerCount Set pFilt
55、er = New SpatialFilter With pFilter Set .Geometry = pTopo.Buffer(0.05) .SpatialRel = esriSpatialRelIntersects End With For i = 0 To Count - 1 Set pFSelection = pMapCtrl.Layer(i) pFSelection.SelectFeatures pFilter, esriSelectionResultNew, False Next pMapCtrl.Refresh esriViewGeoSelection End Select Ex
56、it SubEnd SubPrivate Sub ITool_OnMouseMove(ByVal button As Long, ByVal shift As Long, ByVal X _As Long, ByVal Y As Long) Dim pPoint As esriGeometry.IPoint Select Case m_DrawType Case esriGeometryType.esriGeometryEnvelope 矩形拉框 If Not m_pNewEnvelopeFeedback Is Nothing Then Set pPoint = m_pScreenDispla
57、y.DisplayTransformation.ToMapPoint(X, Y) m_pNewEnvelopeFeedback.MoveTo pPoint河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)27 End If Case esriGeometryType.esriGeometryPolyline 線 If Not m_pNewLineFeedback Is Nothing Then Set pPoint = m_pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y) m_pNewLineFeedback.MoveTo pPoi
58、nt End If Case esriGeometryType.esriGeometryPolygon 多邊形 If Not m_pNewPolygonFeedback Is Nothing Then SetpPoint=m_pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y) m_pNewPolygonFeedback.MoveTo pPoint End If End SelectEnd SubPrivate Sub ITool_OnMouseUp(ByVal button As Long, ByVal shift As Long, By
59、Val _ X As Long, ByVal Y As Long) 拉框和要素緩沖區(qū)是以 MouseUp 停止的 Select Case m_DrawType Case esriGeometryType.esriGeometryEnvelope 矩形拉框 If Not m_pNewEnvelopeFeedback Is Nothing Then Set m_pGeometry = m_pNewEnvelopeFeedback.Stop 停止拉框 RaiseEvent EndDraw(True) 觸發(fā) EndDraw 事件 Set m_pNewEnvelopeFeedback = Nothing
60、 End If Case 1111 要素緩沖區(qū) RaiseEvent EndDraw(True) 觸發(fā) EndDraw 事件 End SelectEnd Sub河南城建學(xué)院畢業(yè)設(shè)計(jì)(論文) 第四章 緩沖區(qū)分析的實(shí)現(xiàn)28 Private Sub ITool_OnDblClick() 多邊形和多義線是以雙擊來停止的 Select Case m_DrawType Case esriGeometryType.esriGeometryPolyline 線,雙擊停止 feedback Set m_pGeometry = m_pNewLineFeedback.Stop RaiseEvent EndDraw(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年出租車公司股權(quán)結(jié)構(gòu)優(yōu)化與調(diào)整協(xié)議3篇
- 2025年度基礎(chǔ)設(shè)施建設(shè)合同預(yù)付款協(xié)議書3篇
- 2024版聯(lián)合養(yǎng)雞協(xié)議范本及指導(dǎo)綱要版B版
- 2025年度幼兒園安全窗簾采購與安裝合同3篇
- 二零二五年度跨國并購股權(quán)整合管理合同3篇
- 二零二五年度航空航天用變壓器研發(fā)生產(chǎn)合同范本3篇
- 2024物權(quán)擔(dān)保期限電子商務(wù)平臺服務(wù)合同3篇
- 2025年樹木種植基地合作與市場推廣合同范本3篇
- 2025年度礦業(yè)權(quán)轉(zhuǎn)讓與環(huán)境保護(hù)責(zé)任書3篇
- 基于二零二五年度業(yè)績的企業(yè)擴(kuò)張合同2篇
- 【云南省中藥材出口現(xiàn)狀、問題及對策11000字(論文)】
- 服裝板房管理制度
- 2024年縣鄉(xiāng)教師選調(diào)進(jìn)城考試《教育學(xué)》題庫及完整答案(考點(diǎn)梳理)
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
- 第七章力與運(yùn)動(dòng)第八章壓強(qiáng)第九章浮力綜合檢測題(一)-2023-2024學(xué)年滬科版物理八年級下學(xué)期
- 醫(yī)療機(jī)構(gòu)診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
- 光伏項(xiàng)目質(zhì)量評估報(bào)告
- 八年級一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測試工程師年度總結(jié)及下一年計(jì)劃
- 應(yīng)急預(yù)案評分標(biāo)準(zhǔn)表
評論
0/150
提交評論