




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ArcGIS Engine空間分析 空間分析功能是GIS的主要功能之一,本章將為讀者介紹一些GIS開發常用的功能涉及到的空間拓撲運算,空間關系運算,空間臨近運算所使用到的接口。例如開發一個緩沖區分析功能,獲取兩個幾何要素的最短距離,判斷兩個幾何要素的拓撲關系等都需要使用到這些接口,使用這些接口可以極大提高開發者的開發效率。1.1目標1.熟悉ITopologicalOperator接口(用于空間拓撲運算)的使用2.熟悉IRelationalOperator接口(用于空間拓撲運算)的使用3.熟悉IProximit
2、yOperator接口(用于空間拓撲運算)的使用1.1 ITopologicalOperator接口1.1.1 ITopologicalOperator接口簡介ITopologicalOperator接口用來通過對已存在的幾何對象做空間拓撲運算以產生新的結合對象。實現該接口的類有Point,Multipoint,Polyline,Polygon,MultiPatch這些都是高級幾何對象,另外GeometryBag也實現了該接口,低級的構建幾何對象如Segments(Line,Circular Arc,Elliptic Arc,Bezier Curve),Paths或者Rings如果想使用該接口
3、需包裝成高級幾何對象。ITopologicalOperator接口在GIS開發中使用非常廣泛,通常GIS系統中緩沖區分析,裁剪幾何圖形,幾何圖形差分操作,幾何圖形合并操作等都需要使用此接口。下表是ITopologicalOperator接口主要的方法說明:方法名稱說明Boundary幾何圖形對象的邊界Buffer對幾何圖形對象進行緩沖區空間拓撲操作Clip對幾何圖形對象進行裁剪空間拓撲操作ConstructUnion高效的合并多個枚舉幾何對象與單個幾何對象合并為單個幾何對象,這對于大量幾何對象的合并非常高效ConvexHull構建幾何對象的凸邊形Cut切割幾何對象Difference一個幾何圖
4、形減去它與另一個幾何圖形相交的部分Intersect兩個同維度幾何對象的交集部分Simplify使幾何對象拓撲一致SymmetricDifference對稱差分將兩個幾何圖形的并集部分減去兩個幾何圖形交集的部分Union合并兩個同維度的幾何對象為單個幾何對象1. Boundary屬性如圖所示Polygon幾何對象的Boundary是組成它的Polyline幾何對象Polyline幾何對象的Boundary是組成它的頂點Point幾何對象而Point幾何對象的Boundary是空對象,示意圖如下圖所示:2.Buffer方法:Buffer方法可以給一個高級幾何對象產生一個緩沖區,無論是Polygo
5、n,Polyline,Point它們的緩沖區都是具有面積的幾何對象,如下圖所示:3.Clip方法Clip方法可以將用一個Envelope對象對一個幾何對象進行裁剪,參見結果是幾何對象被Envelope 對象所包圍的部分如圖所示:4.ConvexHull方法ConvexHull方法可以產生一個幾何圖形的最小的邊框凸多邊形(沒有凹面包含幾何圖形的最小多邊形)5.Cut方法Cut方法不支持GeometryBags幾何對象,它可以指定一條切割曲線和一個幾何圖形,經過切割運算后把幾何圖形分為左右兩部分,做,右兩部分是相對曲線的方向而言。點與多點不能被切割,Polyline和Polygon只有與切割曲線相
6、交時才能執行Cut方法,如下圖:6.Difference方法Difference方法用于產生兩個幾何對象的差集。如圖所示:7.Union方法和ConstructUnion都用于合并幾何對象,所不同的是前者合并兩個同維度的幾何對象為單個幾何對象,而后者是高效的合并多個枚舉幾何對象與單個幾何對象合并為單個幾何對象,這對于大量幾何對象的合并非常高效的。8.Intersect方法Intersect方法用于返回兩個同維度幾何對象的交集,即兩個幾何對象的重合部分。如下圖所示:9.SymetricDifference方法SymetricDifference方法用于產生兩個幾何圖形的對稱差分,即兩個幾何的并集
7、部分減去兩個幾何的交集部分,如下圖所示:10.IsSimple屬性和Simplify方法IsSimple屬性用于檢測幾何對象是否是拓撲正確即為簡化幾何對象,而Simplify方法用于簡化幾何對象使幾何對象的拓撲正確。如下圖所示:6.3.2簡化幾何對象功能開發 在開發對幾何對象空間分析時,所操作的幾何對象必須是簡化的幾何對象,以下代碼片段演示了如何使一個幾何對象在拓撲上一致,例如在一個PointCollection對象中移除所有的重合點;對于segmentCollection移除所有重合線段,而相交的線段會變成非相交線段(即在相交處產生一個頂點);對于Polygon所有相
8、交的環將被移除,未封閉的環將被封閉。CODE:/ <summary> / 簡化幾何對象 / </summary> / <param name="pGeometry">幾何對象</param> private void SimplifyG
9、eometry(IGeometry pGeometry) try ITopologicalOperator pTopOperator = pGeometry as ITopological
10、Operator; if (pTopOperator != null) if (!(pTopOperator.IsKnownSimple)
11、0; if (!(pTopOperator.IsSimple)
12、0; pTopOperator.Simplify();
13、 catch (Exception Err)
14、 MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 6.4 IRelationalOperator接口6.4.1 IRelationalOperator接口簡介
15、幾何對象之間都存在某種關聯關系,如包含,相等,在內部,相交,疊加等。這些關聯關系的獲得都可以通過IRelationalOperator接口來獲得,關系運算是在兩個幾何對象間進行的,通過IRelationalOperator的某一個方法返回一個布爾值來說明這兩個幾何對象是否有這種關系。所有支持ITopologicaloperator的幾何對象的類也實現了IRelationalOperator接口,其中包括Envelope對象,這意味著還可以對兩個幾何對象的Envelope進行關聯關系檢查。方法名稱描述Contains檢查兩個幾何圖形,幾何圖形1是否包含幾何圖形Crosses用于檢測兩個幾何圖形是
16、否相交Equal用于檢測兩個幾何圖形是否相等Touches用于檢測兩個幾何圖形是否相連Disjoint用于檢測兩個幾何圖形是否不相交Overlaps用于檢測兩個幾何圖形是否有重疊Relation用于檢測是否存在定relationshipWithin檢查兩個幾何圖形幾何圖形1是否被包含于幾何圖形6.4.2判斷幾何對象包含關系功能開發 以下代碼片段演示如何判斷幾何圖形A是否包含幾何圖形B:CODE:/ <summary> / 檢測幾何圖形A是否包含幾何圖形B
17、160; / </summary> / <param name="pGeometryA">幾何圖形A</param> / <param name="pGeometryB">幾何圖形B</param> / <returns>True為包含,False為不包含
18、</returns> private bool CheckGeometryContain(IGeometry pGeometryA, IGeometry pGeometryB) IRelationalOperator pRelOperator = pGeometryA as IRelationalOperator;
19、60; if (pRelOperator.Contains(pGeometryB) return true;
20、 else return false; 6.5 IProximityOperator接口6.5.1 IProximityOperator接口簡介IProximityOperator接口用
21、于獲取兩個幾何圖形的距離,以及給定一個Point,求另一個幾何圖形上離離給定點最近的點。IProximityOperator接口的主要方法有:QueryNearesPoint,ReturnDistance, ReturnNearestPoint ReturnDistance方法用于返回兩個幾何對象間的最短距離,QueryNearesPoint方法用于查詢獲取幾何對象上離給定輸入點的最近距離的點的引用,ReturnNearestPoint方法用于創建并返回幾何對象上離給定輸入點的最近距離的點。6.5.2 最近點查詢功能開發以下代碼片段演示如何使用IProximityOperator接口獲取給定點
22、與要查詢的幾何圖形的最近點: CODE: / 在pGeometry上返回一個離pInputPoint最近的point / </summary> / <param name="pInputPoint">給定的點對象</param> / <param name="pGeometry&qu
23、ot;>要查詢的幾何圖形</param> / <returns>the nearest Point</returns> private IPoint NearestPoint(IPoint pInputPoint, IGeometry pGeometry) &
24、#160; try IProximityOperator pProximity = (IProximityOperator)pGeometry; IPoint pNearestPoint = pPro
25、ximity.ReturnNearestPoint(pInputPoint, esriSegmentExtension.esriNoExtension); return pNearestPoint; catch(Exception Err)
26、; MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; &
27、#160; 以下代碼片段演示如何使用IProximityOperator接口查詢給定的兩個幾何對象的距離: CODE: / <summary> / 獲取兩個幾何圖形的距離 / </summary> / <param name="pGeometryA">幾何圖形A</param> / <param name="pGeometryB">幾何圖形B</param> / <returns>兩個幾何圖形的距離</returns> private double GetTwoGeometryDistance(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論