Engine发教程 - 图文 下载本文

catch (Exception Err)

{

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

}

}

2.4.9Geometry集合接口

通过前边对于具体的Geometry对象的介绍可知,除了Point对象之外,其他几何对象都是通过其他几何对象集合构建而成。如MultiPoint对象是点的集合,Path对象是Segment对象的集合,Polyline对象是Path对象的集合,Polygon对象是Ring对象的集合,Multipatch

对象是Triangle Strip和Trangle Fan, Trangle,Ring对象的集合。

ArcGIS Engine提供了三个主要的几何图形集合接口用于对几何对象的操作,分别是IPointCollection,ISegmentCollection和IGeometryCollection,这些接口揭示出ArcGIS Engine的几何模型的实质——它们是一种组合构成的模式,这种组合并不一定按照严格的

层次结构组织。

在前面介绍一些几何对象的时候,也给大家演示了部分使用功能,这三个接口在程序开发中

经常使用到,接下来简单阐述以下这三个接口的使用方法。

2.4.9.1IGeometryCollection接口IGeometryCollection接口被Polygon,Polyline, Multipoint, Multipatch, Trangle,T rangle Strip,Trangle Fan和GeometryBag所实现。IGeometryCollection接口提供的方法可以让开发者对一个几何对象的组成元素即子对象

进行添加,改变和移除。例如: 组成Polyline对象的子对象是Path对象。 组成Polygon对象的子对象是Ring对象。

组成Multipoint对象的子对象是Point对象。

组成MultiPatch对象的子对象是TrangleFan TrangleStrip,Triangle或Ring对象。 组成GeometryBag对象的是任何类型的几何体对象,实际上GeometryBag是一个可以容纳任

何类型几何对象的容器。

IGeometryCollection的Geometry 属性可以通过一个索引值返回一个组成该几何对象的某

个子对象,而GeometryCount返回组成该几何对象的子对象的数目。

IGeometry的AddGeometry和AddGeometries方法都用于向一个几何对象添加子对象,它们的区别是前者一次只能添加一个几何对象,而后者可以一次添加一个几何对象数组。除此之外,AddGeometry方法可以将子对象添加到几何的指定索引值的位置,而AddGeometries方

法将子对象数组添加到集合的最后。

在使用AddGeometry方法添加子对象到Polygon对象的过程中,如果子对象即Ring出现覆盖现象,那么多边形就没有封闭或出现了包含关系,那么这个Polygon就不是简单Polygon,因此通过IGometryCollection来创建一个Polygon时,需要使用ITopologicalOperator 的

Simplify方法保证其有效性。

通过IGeometryCollection创建一个Polygon对象的代码片段如下:

///

///

构造Polygon对象

///

///

///

返回一个Polygon对象

private IPolygon ConstructorPolygon(List pRingList)

{

try

{

//创建一个Polygon对象

IGeometryCollection pGCollection = new PolygonClass();

object o = Type.Missing;

//遍历Ring集合

for(int i=0;i

{

//通过IGeometryCollection接口的AddGeometry方法向Polygon对象中添加Ring子对象

pGCollection.AddGeometry(pRingList, ref o, ref o);

}

//QI至ITopologicalOperator ITopologicalOperator pTopological = pGCollection as ITopologicalOperator; //执行Simplify操作 pTopological.Simplify();