接口教程.docx

上传人:b****6 文档编号:4778780 上传时间:2022-12-08 格式:DOCX 页数:13 大小:168.69KB
下载 相关 举报
接口教程.docx_第1页
第1页 / 共13页
接口教程.docx_第2页
第2页 / 共13页
接口教程.docx_第3页
第3页 / 共13页
接口教程.docx_第4页
第4页 / 共13页
接口教程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

接口教程.docx

《接口教程.docx》由会员分享,可在线阅读,更多相关《接口教程.docx(13页珍藏版)》请在冰豆网上搜索。

接口教程.docx

接口教程

ArcGISEngine空间分析

空间分析功能是GIS的主要功能之一,本章将为读者介绍一些GIS开发常用的功能涉及到的空间拓扑运算,空间关系运算,空间临近运算所使用到的接口。

例如开发一个缓冲区分析功能,获取两个几何要素的最短距离,判断两个几何要素的拓扑关系等都需要使用到这些接口,使用这些接口可以极大提高开发者的开发效率。

1.1目标

1.熟悉ITopologicalOperator接口(用于空间拓扑运算)的使用

2.熟悉IRelationalOperator接口(用于空间拓扑运算)的使用

3.熟悉IProximityOperator接口(用于空间拓扑运算)的使用

1.2准备工作

1.IDE:

VisualStudio2005/2008

2.ArcGISEngineDeveloperkit9.3

1.1ITopologicalOperator接口1.1.1ITopologicalOperator接口简介ITopologicalOperator接口用来通过对已存在的几何对象做空间拓扑运算以产生新的结合对象。

实现该接口的类有Point,Multipoint,Polyline,Polygon,MultiPatch这些都是高级几何对象,另外GeometryBag也实现了该接口,低级的构建几何对象如Segments(Line,CircularArc,EllipticArc,BezierCurve),Paths或者Rings如果想使用该接口需包装成高级几何对象。

ITopologicalOperator接口在GIS开发中使用非常广泛,通常GIS系统中缓冲区分析,裁剪几何图形,几何图形差分操作,几何图形合并操作等都需要使用此接口。

下表是ITopologicalOperator接口主要的方法说明:

方法名称

说明

Boundary

几何图形对象的边界

Buffer

对几何图形对象进行缓冲区空间拓扑操作

clip

对几何图形对象进行裁剪空间拓扑操作

ConstructUnion

高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效

ConvexHull

构建几何对象的凸边形

Cut

切割几何对象

Difference

一个几何图形减去它与另一个几何图形相交的部分

Intersect

两个同维度几何对象的交集部分

Simplify

使几何对象拓扑一致

SymmetricDifference

对称差分将两个几何图形的并集部分减去两个几何图形交集的部分

Union

合并两个同维度的几何对象为单个几何对象

1.Boundary属性

如图所示Polygon几何对象的Boundary是组成它的Polyline几何对象

Polyline几何对象的[Boundary是组成它的顶点Point几何对象

而Point几何对象的Boundary是空对象,示意图如下图所示:

2010-10-2515:

24上传

下载附件(20.15KB)

2.Buffer方法:

Buffer方法可以给一个高级几何对象产生一个缓冲区,无论是Polygon,Polyline,Point它们的缓冲区都是具有面积的几何对象,如下图所示:

2010-10-2515:

25上传

下载附件(11.73KB)

3.Clip方法

Clip方法可以将用一个Envelope对象对一个几何对象进行裁剪,参见结果是几何对象被Envelope对象所包围的部分如图所示:

2010-10-2515:

25上传

下载附件(16.11KB)

4.ConvexHull方法

ConvexHull方法可以产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)

2010-10-2515:

26上传

下载附件(11.54KB)

5.Cut方法

Cut方法不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,做,右两部分是相对曲线的方向而言。

点与多点不能被切割,Polyline和Polygon只有与切割曲线相交时才能执行Cut方法,如下图:

2010-10-2515:

27上传

下载附件(10.03KB)

6.Difference方法

Difference方法用于产生两个几何对象的差集。

如图所示:

2010-10-2515:

27上传

下载附件(10.61KB)

7.Union方法和ConstructUnion都用于合并几何对象,所不同的是前者合并两个同维度的几何对象为单个几何对象,而后者是高效的合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效的。

2010-10-2515:

28上传

下载附件(5.69KB)

8.Intersect方法

Intersect方法用于返回两个同维度几何对象的交集,即两个几何对象的重合部分。

如下图所示:

2010-10-2515:

28上传

下载附件(8.04KB)

9.SymetricDifference方法

SymetricDifference方法用于产生两个几何图形的对称差分,即两个几何的并集部分减去两个几何的交集部分,如下图所示:

2010-10-2515:

29上传

下载附件(12.38KB)

10.IsSimple属性和Simplify方法

IsSimple属性用于检测几何对象是否是拓扑正确即为简化几何对象,而Simplify方法用于简化几何对象使几何对象的拓扑正确。

如下图所示:

2010-10-2515:

29上传

下载附件(50.01KB)

简化几何对象功能开发

  在开发对几何对象空间分析时,所操作的几何对象必须是简化的几何对象,以下代码片段演示了如何使一个几何对象在拓扑上一致,例如在一个PointCollection对象中移除所有的重合点;对于segmentCollection移除所有重合线段,而相交的线段会变成非相交线段(即在相交处产生一个顶点);对于Polygon所有相交的环将被移除,未封闭的环将被封闭。

1.///<summary>

2.      ///简化几何对象

3.      ///</summary>

4.      ///<paramname="pGeometry">几何对象</param>

5.      privatevoidSimplifyGeometry(IGeometrypGeometry)

6.      {

7.        try

8.        {

9.          ITopologicalOperatorpTopOperator=pGeometryasITopologicalOperator;

10.          if(pTopOperator!

=null)

11.          {

12.              if(!

(pTopOperator.IsKnownSimple))

13.              {

14.                if(!

(pTopOperator.IsSimple))

15.                {

16.                  pTopOperator.Simplify();

17.                }

18.              }

19.          }

20.        }

21.        catch(ExceptionErr)

22.        {

23.          MessageBox.Show(Err.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

24.        }

25.      }

复制代码

6.4IRelationalOperator接口

6.4.1IRelationalOperator接口简介几何对象之间都存在某种关联关系,如包含,相等,在内部,相交,叠加等。

这些关联关系的获得都可以通过IRelationalOperator接口来获得,关系运算是在两个几何对象间进行的,通过IRelationalOperator的某一个方法返回一个布尔值来说明这两个几何对象是否有这种关系。

所有支持ITopologicaloperator的几何对象的类也实现了IRelationalOperator接口,其中包括Envelope对象,这意味着还可以对两个几何对象的Envelope进行关联关系检查。

方法名称                              描述

Contains                检查两个几何图形几何图形1是否包含几何图形2

Crosses                用于检测两个几何图形是否相交

Equal                  用于检测两个几何图形是否相等

Touches                用于检测两个几何图形是否相连

Disjoint                用于检测两个几何图形是否不相交

Overlaps                用于检测两个几何图形是否有重叠

Relation                用于检测是否存在定义relationship

Within                  检查两个几何图形几何图形1是否被包含于几何图形2

6.4.2判断几何对象包含关系功能开发以下代码片段演示如何判断几何图形A是否包含几何图形B:

1.1.      ///检测几何图形A是否包含几何图形B

2.2.      ///

3.3.      ///几何图形A

4.4.      ///几何图形B

5.5.      ///True为包含,False为不包含

6.6.      privateboolCheckGeometryContain(IGeometrypGeometryA,IGeometrypGeometryB)

7.7.      {

8.8.        IRelationalOperatorpRelOperator=pGeometryAasIRelationalOperator;

9.9.        if(pRelOperator.Contains(pGeometryB))

10.10.        {

11.11.          returntrue;

12.12.        }

13.13.        else

14.14.        {

15.15.          returnfalse;

16.16.        }

17.17.    }

复制代码

6.5IProximityOperator接口

6.5.1IProximityOperator接口简介

IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点。

IProximityOperator接口的主要方法有:

QueryNearesPoint,ReturnDistance,ReturnNearestPoint

ReturnDistance方法用于返回两个几何对象间的最短距离,QueryNearesPoint方法用于查询获取几何对象上离给定输入点的最近距离的点的引用,ReturnNearestPoint方法用于创建并返回几何对象上离给定输入点的最近距离的点。

6.5.2最近点查询功能开发

以下代码片段演示如何使用IProximityOperator接口获取给定点与要查询的几何图形的最近点:

1.1.  ///在pGeometry上返回一个离pInputPoint最近的point

2.

3.2.      ///

4.

5.3.      ///给定的点对象

6.

7.4.      ///要查询的几何图形

8.

9.5.      ///thenearestPoint

10.

11.6.      privateIPointNearestPoint(IPoint  pInputPoint,IGeometrypGeometry)

12.

13.7.      {

14.

15.8.        try

16.

17.9.        {

18.

19.10.           IProximityOperatorpProximity=(IProximityOperator)pGeometry;

20.

21.11.          IPointpNearestPoint=pProximity.ReturnNearestPoint(pInputPoint,esriSegmentExtension.esriNoExtension);

22.

23.12.          returnpNearestPoint;

24.

25.13.        }

26.

27.14.        catch(ExceptionErr)

28.

29.15.        {

30.

31.16.          MessageBox.Show(Err.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

32.

33.17.          returnnull;

34.

35.18.        }

36.

37.19.}

复制代码

以下代码片段演示如何使用IProximityOperator接口查询给定的两个几何对象的距离:

1.///获取两个几何图形的距离

2.

3.

4.1.      ///

5.2.      ///几何图形A

6.3.      ///几何图形B

7.4.      ///两个几何图形的距离

8.5.      privatedouble  GetTwoGeometryDistance(IGeometrypGeometryA,IGeometrypGeometryB)

9.6.      {        

10.7.        IProximityOperator  pProOperator=pGeometryAasIProximityOperator;

11.8.        if(pGeometryA!

=null||pGeometryB!

=null)

12.9.        {

13.10.          doubledistance=  pProOperator.ReturnDistance(pGeometryB);

14.11.          returndistance;

15.12.        }

16.13.        else

17.14.        {

18.15.          return0;

19.16.        }

20.17.    }

复制代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1