牟乃夏ArcEngine教程-第7章__矢量數(shù)據(jù)空間_第1頁
牟乃夏ArcEngine教程-第7章__矢量數(shù)據(jù)空間_第2頁
牟乃夏ArcEngine教程-第7章__矢量數(shù)據(jù)空間_第3頁
牟乃夏ArcEngine教程-第7章__矢量數(shù)據(jù)空間_第4頁
牟乃夏ArcEngine教程-第7章__矢量數(shù)據(jù)空間_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、牟乃夏牟乃夏 ArcGIS Engine 地理信息系統(tǒng)開發(fā)教地理信息系統(tǒng)開發(fā)教程程配套配套PPT-第7章 矢量數(shù)據(jù)空間分析目錄 1. 空間拓撲分析 2. 空間關系運算 3. 疊加分析 4. 數(shù)據(jù)格式轉(zhuǎn)換 5. 添加X Y數(shù)據(jù) 6. 使用GP工具進行空間分析1. 空間拓撲分析 通過一系列的基于一個或者多個幾何圖形間的邏輯比較,然后返回另外一些幾何圖形的過程就是空間幾何圖形的拓撲運算。它是空間分析的基礎,各種空間分析的結果都可以通過幾何圖形之間的拓撲運算實現(xiàn)。 相關類與接口(ITopologicalOperator接口) ITopologicalOperator接口的方法僅僅使用在高級別幾何對象上

2、,即Point、MultiPoint、Polyline和Polygon,如果要使用在低等級的幾何對象中,如Segment(Line,Circular,Arc,Elliptic Arc,Bezier Curve)、Path或Ring上,需要先將他們組合成高級別幾何對象才行。1. 空間拓撲分析 ITopologicalOperator接口的主要方法及屬性有: 1)Boundary屬性 2)Buffer方法 3)Clip方法 4)Union與ConstructUnion方法 5)ConvexHull方法 6)Cut方法 7)Difference方法與SymmetricDifference方法 8)I

3、ntersection方法 9)Simplify方法BoundaryBuffer方法Clip方法Union方法ConvexHull方法Cut方法Difference方法SymmetricDifference方法Intersection方法Simplify方法1. 空間拓撲分析 1.1 實例詳解-緩沖區(qū)分析 本例的目的是實現(xiàn)在地圖上點擊選擇任意一個多邊形要素,程序自動生成該多邊形一定范圍內(nèi)的緩沖區(qū)并渲染到地圖上。 實現(xiàn)的基本思路為: 添加緩沖區(qū)分析操作工具; 在其OnMouseDown方法中執(zhí)行點擊查詢要素操作; 將查詢結果要素通過ITopologicalOperator. Buffer方法進行

4、緩沖區(qū)生成操作; 將緩沖區(qū)生成結果利用空間要素渲染方式展示到地圖上。1. 空間拓撲分析 其程序設計具體步驟為: 向工程項目中添加繼承自BaseTool類的文件,該類實現(xiàn)了BaseCommand基礎類和ITool接口的所有方法; 添加ToolBufferAnalysis 類中的OnClick方法的實現(xiàn)代碼,用以判定是否符合緩沖區(qū)操作的前提條件(地圖中是否加載圖層),并修改鼠標樣式; 添加ToolBufferAnalysis 類的OnMouseDown方法的實現(xiàn),生成緩沖區(qū)并將生成的緩沖區(qū)要素添加到地圖中;1. 空間拓撲分析 在主程序窗體的按鈕事件中,利用ICommand接口調(diào)用ToolBuffe

5、rAnalysis工具類,實現(xiàn)點擊選擇地理要素并生成緩沖區(qū)的操作;點擊選擇后的多邊形生成緩沖區(qū)效果展示1. 空間拓撲分析 1.2 實例詳解-獲取多邊形要素邊界 本例旨在實現(xiàn)通過在地圖上點擊選擇任意一個多邊形圖形要素,系統(tǒng)自動獲得該多邊形的邊界并渲染展示到地圖上。核心代碼2. 空間關系運算 相關類與接口(IRelationalOperator 接口) 幾何對象之間空間關系主要有:包含、相等、在內(nèi)部、相交等。矢量數(shù)據(jù)的空間關系運算需要用到IRelationalOperator接口,通過該接口的不同方法判定兩個幾何對象之間的關系是否存在。關系運算符用以比較兩個幾何體,并返回一個boolean型值來說

6、明某種空間關系是否存在。 空間包含關系(Contains、Within) 交叉(Crosses) 相離(Disjoint) 重疊(Overlaps) 相等(Equals) 相接(Touches)2. 空間關系運算 2.1 實例詳解-查找一多邊形要素的所有鄰接要素 本例通過在地圖上點擊選擇任意一個多邊形,系統(tǒng)自動獲取與該多邊形要素相鄰接的其它多邊形并顯示到地圖上。核心代碼3. 疊加分析 疊加分析(也稱疊置分析)是將同一區(qū)域,相同參考系統(tǒng)、相同比例尺的兩個或多個數(shù)據(jù)進行疊加產(chǎn)生一個新數(shù)據(jù)層的操作,其結果綜合了原來兩層或多層要素所具有的屬性信息,并且還能從已有的數(shù)據(jù)中提取空間隱含的信息。 相關類與接

7、口(IBasicGeoprocessor接口) 疊加分析所用到的主要接口是IBasicGeoprocessor接口,它提供了基本的矢量數(shù)據(jù)處理的方法和屬性,概括為疊置求交與疊置求和。該接口包括5個方法(Intersect、Union、Clip、Dissolve、Merge)和2個屬性(SpatialReference和CancelTracker)。3. 疊加分析Clip方法原理圖Dissolve方法原理圖Intersect方法原理圖Merge方法原理圖Union方法原理圖3. 疊加分析 實例詳解:兩相交面圖層的裁剪(Clip)分析 本例利用IBasicGeoprocessor接口的Clip方法

8、實現(xiàn)兩個相交面圖層的裁剪分析操作,通過輸入被裁剪要素圖層和裁剪要素圖層,獲得目標要素圖層,該圖層的數(shù)據(jù)結構同被裁剪要素的數(shù)據(jù)結構保持一致。 實現(xiàn)步驟如下: 主窗體中添加觸發(fā)裁剪操作按鈕事件的代碼,通過獲取裁剪圖層和被裁剪圖層,調(diào)用Clip公共方法,返回結果FeatureClass數(shù)據(jù)集,并加載到地圖中; 添加通過圖層名稱從地圖mapControl空間中獲取對應圖層公共方法函數(shù)GetLayerByName(string layerName); 添加Clip裁剪公共方法,利用IBasicGeoprocessor接口中的Clip方法實現(xiàn)裁剪操作,生成ShapeFile數(shù)據(jù)作為保存在磁盤中,并輸出結果

9、FeatureClass作為返回結果數(shù)據(jù);關于裁剪操作,在 7.1講解ITopologicalOperator接口時介紹了Clip方法,在IBasicGeoprocessor接口中也有Clip方法。這兩個方法的區(qū)別是:ITopologicalOperator是針對兩矢量空間要素進行圖形信息的裁剪;IBasicGeoprocesso主要針對矢量要素集(圖層),其結果綜合了原來兩層或多層要素所具有的屬性信息。4. 數(shù)據(jù)格式轉(zhuǎn)換矢量數(shù)據(jù)的格式轉(zhuǎn)換是GIS軟件常用的功能之一,在自己編寫的應用軟件中,也經(jīng)常用到該功能。常用的數(shù)據(jù)格式轉(zhuǎn)換方法主要有ShapeFile文件和CAD文件、Coverage文件等

10、的轉(zhuǎn)換。相關類與接口(IFeatureDataConverter接口) 數(shù)據(jù)格式轉(zhuǎn)換操作主要用到IFeatureDataConverter接口,它包含三個方法:ConvertFeatureClass、ConvertFeatureDataset和ConvertTable,分別可以將要素類、要素集或表轉(zhuǎn)換成其它數(shù)據(jù)集,它不僅可以轉(zhuǎn)換單個的要素類或表,也可以轉(zhuǎn)換整個數(shù)據(jù)集(如ArcInfo Coverage)。 同時,F(xiàn)eatureDataConverter對象能夠使數(shù)據(jù)在Geodatabase,ShapeFile和Coverages等大多數(shù)的數(shù)據(jù)類型(除了標注)之間實現(xiàn)轉(zhuǎn)換。在把數(shù)據(jù)引入Geoda

11、tabase時,可以進行數(shù)據(jù)的條件篩選,只將符合條件的要素轉(zhuǎn)換到目標要素集;當進行數(shù)據(jù)轉(zhuǎn)入到ArcSDE Geodatabase中時,還可以通過配置ArcSDE的某些關鍵字來指定存儲參數(shù)。4. 數(shù)據(jù)格式轉(zhuǎn)換以ConvertFeatureClass方法為例說明,其轉(zhuǎn)換過程各參數(shù)意義如下:1)InputDatasetName(IFeatureClassName)參數(shù)用于指定輸入要素類的一個Name對象,以確定待轉(zhuǎn)換的矢量數(shù)據(jù)。2)InputQueryFilter(IQueryFilter)參數(shù)用于過濾要轉(zhuǎn)換的要素的QueryFilter對象,用以篩選待轉(zhuǎn)換的矢量數(shù)據(jù)。3)outputFDatase

12、tName(IFeatureDatasetName)參數(shù)轉(zhuǎn)換完成的要素類輸出的新數(shù)據(jù)結果集成到現(xiàn)有數(shù)據(jù)集的IFeatureDatasetName對象中。4)outputFClassName(IFeatureClassName)參數(shù)轉(zhuǎn)換完成后,輸出要素類的Name對象。5)OutputGeometryDef(IGeometryDef)參數(shù)用于指定輸出要素類的空間參考信息的GeometryDef對象。如果為null,就使用輸入要素類的空間參考信息。6)OutputFields(IFields)參數(shù)用于指定輸出要素類的字段集。如果把要素結果類輸出為同樣的數(shù)據(jù)格式,可以使用輸入的要素類的字段集。如果格

13、式有變化,建議使用FieldChecker以確保輸出的格式有效。7)configKey(string)參數(shù)用于指定ArcSDE配置關鍵字的字符串。4. 數(shù)據(jù)格式轉(zhuǎn)換 實例詳解-將ShapeFile數(shù)據(jù)導入到File Geodatabase 本實例通過IFeatureDataConverte接口的ConvertFeatureClass方法將ShapeFile格式的數(shù)據(jù)轉(zhuǎn)換導入到File Geodatabase數(shù)據(jù)庫中,并可以設置屬性篩選條件進行部分導入。 實例步驟:4. 數(shù)據(jù)格式轉(zhuǎn)換實例詳解-通過數(shù)據(jù)解析方式實現(xiàn)ShapeFile數(shù)據(jù)轉(zhuǎn)CAD格式數(shù)據(jù) 實現(xiàn)思路:首先通過對ShapeFile數(shù)據(jù)的

14、遍歷以及屬性條件進行篩選,然后將符合條件的數(shù)據(jù)利用System.IO.TextWrite方法類進行CAD文件的寫入,實現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)化。實現(xiàn)步驟:首先獲取地圖中加載的ShapeFile數(shù)據(jù)轉(zhuǎn)換為ILayer接口的對象,然后選擇轉(zhuǎn)換成功后CAD格式數(shù)據(jù)的存儲路徑,調(diào)用封裝的ConvertShapeToDXF類中的轉(zhuǎn)換方法實現(xiàn)轉(zhuǎn)換,轉(zhuǎn)換成功后進行信息提示;獲取 FeatureLayer對象的數(shù)據(jù)最大范圍矩形,并據(jù)此進行CAD文件區(qū)域范圍的寫入; 初始化構建CAD文件屬性表;初始化構建CAD文件塊;初始化構建CAD文件實體,即將解析后的ShapeFile數(shù)據(jù)進行CAD文件格式的寫入,此過程可以針對寫

15、入的要素進行條件篩選;以Point對象為例,設置CAD對象的線長、顏色。此外,Polyline和Polygon也可以參照此方法進行設置,不過要比Point復雜,具體代碼請讀者參考隨書光盤;5. 添加X Y數(shù)據(jù) ArcGIS軟件中有添加X、Y數(shù)據(jù)的功能,目的是將以X、Y二維幾何坐標形式存儲的數(shù)據(jù)轉(zhuǎn)換為GIS中的圖形數(shù)據(jù)。 相關類與接口 實現(xiàn)將包含X、Y坐標的文本文件、Excel文件或者Access文件生成GIS的點數(shù)據(jù)的接口主要有:IXYEventSource、IXYEventSourceName和IXYEvent2FieldsProperties等。5. 添加X Y數(shù)據(jù)相關類與接口1)IXYE

16、ventSource接口IXYEventSourceName接口的Open方法執(zhí)行將X、Y數(shù)據(jù)轉(zhuǎn)化為IFeatureClass的功能,形成空間數(shù)據(jù)。2)IXYEventSourceName接口IXYEventSourceName接口主要用于初始化XYEventSourceNameClass對象,利用其EventProperties屬性賦予IXYEvent2FieldsProperties初始化對象值,完成屬性的傳遞。同時IXYEventSourceName對象強制轉(zhuǎn)化為IName對象,借助IName對象的Open方法形成IXYEventSource空間要素數(shù)據(jù)集,即可強制轉(zhuǎn)化為IFeature

17、Class空間矢量要素數(shù)據(jù)集,然后可進行數(shù)據(jù)加載。3)IXYEvent2FieldsProperties接口IXYEvent2FieldsProperties接口主要用于賦予EventProperties屬性值,通過SpatialReference 屬性賦予坐標系統(tǒng)和EventTableName 屬性賦予事件數(shù)據(jù)結果表名稱。5. 添加X Y數(shù)據(jù)實例詳解-帶有X、Y字段的Excel數(shù)據(jù)表轉(zhuǎn)為點數(shù)據(jù)本例將帶有X、Y字段的Excel數(shù)據(jù)表轉(zhuǎn)化為點要素類,通過指定對應的數(shù)據(jù)字段和坐標參考將表對象轉(zhuǎn)化為IFeatureClass對象。實現(xiàn)的具體步驟為:向工程項目中添加自定義窗體,該窗體命名為“FrmXY

18、ToPoint”,其設計布局和屬性設置。利用打開Excel坐標文件的【打開】按鈕的Click方法實現(xiàn)通過OleDbConnection數(shù)據(jù)訪問類打開Excel數(shù)據(jù),并讀取Excel中Sheet列表添加到“選擇坐標數(shù)據(jù)表”下拉列表控件中;利用“選擇坐標數(shù)據(jù)表”下拉列表中的SelectedIndexChanged事件讀取所選擇的Sheet表中字段集合并加載到X、Y字段選擇下列列表中;利用數(shù)據(jù)轉(zhuǎn)化【成圖】按鈕的Click方法執(zhí)行數(shù)據(jù)轉(zhuǎn)換過程;數(shù)據(jù)轉(zhuǎn)化完成,帶有X、Y坐標字段的數(shù)據(jù)轉(zhuǎn)換成點數(shù)據(jù)。6. 使用GP工具進行空間分析ArcToolbox是所有工具的集合,提供工具運行的環(huán)境。在ArcGIS Engine編程過程中,可以通過調(diào)用GP工具來實現(xiàn)某些常用的功能。相關類與接口 調(diào)用GP工具主要應用了GeoProcessor類,這個類也可以調(diào)用我們

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論