第四章几何形体对象_第1页
第四章几何形体对象_第2页
第四章几何形体对象_第3页
第四章几何形体对象_第4页
第四章几何形体对象_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 几何形体对象 在GIS中,矢量数据模型是地理数据的主要表现形式,Geodatabase中的每一条要素记录都有一个shape字段用于保存它的一个或多个几何形体对象,正是由于存在着这种精确的特征,才使得ArcGIS可以对这些要素进行不同的空间分析和运算,得出用户需要的结果。 对创建一个要素或图形元素而言,几何形体对象也是它们的主要属性,由于Geometry属性的存在,用户才能以图形的方式看到GIS要表示的信息。 本章包含以下具体内容: 1.Geometry模型2.Point和Multipoint对象3.包络线对象4.各种曲线对象5.Geometry集合对象6.空间参考4.1 Geometr

2、y模型模型 Geometry是是AE中使用最广泛的对象集之一,用中使用最广泛的对象集之一,用户在新建、删除、编辑和进行地理分析的时候,就是户在新建、删除、编辑和进行地理分析的时候,就是在处理一个包含几何形体的矢量对象;除显示要素外,在处理一个包含几何形体的矢量对象;除显示要素外,在空间选择、要素着色制作专题图、标注编辑等很多在空间选择、要素着色制作专题图、标注编辑等很多过程中,也需要使用过程中,也需要使用Geometry对象。对象。PointMultiPointRingPathSegmentGeometryEnvelopeCurvePolylineLineBezierCurveCircular

3、ArcPolycurve*Polygon*Geometrycollection* 在在Geometry模型中,几何形体对象被分为两个层次,模型中,几何形体对象被分为两个层次,其一是构成要素的几何图形,另一个是组成这些形状的构其一是构成要素的几何图形,另一个是组成这些形状的构件。前者称为高级几何对象,具体包括件。前者称为高级几何对象,具体包括Point、Multipoint、Envelope、Polyline、Polygon。除了。除了“高级几何对象高级几何对象”外,外,Geometry模型中的其他对象都是模型中的其他对象都是构件几何对象,它们组合构成了高级几何对象,如构件几何对象,它们组合构成

4、了高级几何对象,如segement对象构成了对象构成了Path,而一个或是多个,而一个或是多个Path对象对象组成了组成了Polyline。 在在Geometry模型中,某些几何对象可以组合产生新模型中,某些几何对象可以组合产生新的几何形体,如的几何形体,如Polyline由由Path组成,而组成,而Path则可以由则可以由Segment组成。但并不是用户必须有组成。但并不是用户必须有“层次层次”建立高级建立高级几何对象。即可以由几何对象。即可以由Point对象构建所有的几何形体。对象构建所有的几何形体。AE提供了提供了IGeometryCollection接口,接口,GeometryColl

5、ection是具有相同类型几何对象的集合,是具有相同类型几何对象的集合,即可以是描述即可以是描述Polyline路径的集合,或者是描述路径的路径的集合,或者是描述路径的片段(片段(Segement)集合,甚至是可以直接组成)集合,甚至是可以直接组成Polyline的点的集合。下表列举了各种组合关系以及可的点的集合。下表列举了各种组合关系以及可使用的集合接口:使用的集合接口:Geometry模型组合关系和可用接口模型组合关系和可用接口Geometry类类Geometry类是所有几何形体对象的父类,它是一个抽象类。类是所有几何形体对象的父类,它是一个抽象类。IGeometry接口定义了所有几何对象

6、都拥有的属性和方法。接口定义了所有几何对象都拥有的属性和方法。在在Geometry模型中,很多对象都是组件类,因此可以接创模型中,很多对象都是组件类,因此可以接创建一个几何形体对象。但是使用建一个几何形体对象。但是使用new关键字创建的几何对关键字创建的几何对象,在使用之前必须添加具体的信息。象,在使用之前必须添加具体的信息。IGeometry常用属性和方法常用属性和方法 IGeometry:Dimension 查询几何形体维度查询几何形体维度 IGeometry:Envelope 返回包络线返回包络线 IGeometry:IsEmpty 查看对象是否为空查看对象是否为空 IGeometry:

7、SetEmpty 将一个几何对象设置为空,仅保将一个几何对象设置为空,仅保留其空间参考属性。留其空间参考属性。 IGeometry:Project 设置一个几何对象的空间参考属性设置一个几何对象的空间参考属性 IGeometry:GeometryType 返回对象的几何类型。返回对象的几何类型。4.2 Point和和Multipoint对象对象一、一、Point对象对象 点点Point代表了一个代表了一个0维的、具有维的、具有X、Y坐标的几何对象坐标的几何对象。点没有形状,既可以用于表示描述点类型的要素,也可以。点没有形状,既可以用于表示描述点类型的要素,也可以用在寻址、符号化和用于组成一个网

8、络,且任何几何对象都用在寻址、符号化和用于组成一个网络,且任何几何对象都可以使用点来产生。可以使用点来产生。 构成几何形状的顶点,存在三种可选择的属性,即构成几何形状的顶点,存在三种可选择的属性,即Z值、值、M值和值和ID值。值。Z值大多数情况下表示点的高程,也可将值大多数情况下表示点的高程,也可将Z值值作为一点的辅助值来还使用,如某点的降雨量、空气污染指作为一点的辅助值来还使用,如某点的降雨量、空气污染指数等,这些数等,这些Z值的存在,可以构成一个三维曲面。值的存在,可以构成一个三维曲面。M值是所值是所谓的谓的Mesasure值,即度量值。值,即度量值。ID号是一个点的唯一标识值号是一个点的

9、唯一标识值,用于唯一确定一个点对象。,用于唯一确定一个点对象。1、IPoint接口接口定义了定义了Point对象的属性和方法:对象的属性和方法:ID属性:返回点对象的属性:返回点对象的ID号;号;M、Z值:返回点的测量号和高程值值:返回点的测量号和高程值 X和和Y:获得一个点的:获得一个点的X和和Y坐标值坐标值 PutCoords:用于设置一个点的:用于设置一个点的X、Y坐标值坐标值 ConstrainAngle和和ConstrainDistance方法可方法可以使用参数改变已经存在点的位置。如以使用参数改变已经存在点的位置。如ConstrainAngle只要确定旋转角度和描述点等参只要确定旋

10、转角度和描述点等参数,就可以精确移动。数,就可以精确移动。2、IConstructPoint接口接口 AE中中Geometry模型的一个重要特点是它具有模型的一个重要特点是它具有一套丰富的,利用已经存在的几何对象的距离、一套丰富的,利用已经存在的几何对象的距离、角度和空间关系,生成新的几何形体对象的方法。角度和空间关系,生成新的几何形体对象的方法。 使用这些方法常常涉及使用角度和偏转角。在使用这些方法常常涉及使用角度和偏转角。在AE编写程序时,角度使用的是弧度单位,而长度编写程序时,角度使用的是弧度单位,而长度单位使用地图投影单位。单位使用地图投影单位。 IConstructPoint接口,可

11、以使用多达接口,可以使用多达10种方种方法来创建所需要的点,下面介绍几种点的构造方法来创建所需要的点,下面介绍几种点的构造方法:法:(1)ConstructAlong沿线创建方法沿线创建方法 沿线创建法是基于一个曲线(沿线创建法是基于一个曲线(Curve)上起始点对象,通过给定距)上起始点对象,通过给定距离、比例和扩展类型,沿着曲线创建一个新点。如果距离比曲线的长离、比例和扩展类型,沿着曲线创建一个新点。如果距离比曲线的长度要长,那么点将沿着它的切线生成度要长,那么点将沿着它的切线生成。(2)ConstructAngleBisector角平分线创建法角平分线创建法 这种方法使用三个点,即起始点

12、(这种方法使用三个点,即起始点(FromPoint)、通过点()、通过点(Through Point)和终止点()和终止点(ToPoint)。该方法通过平分三点形成的夹)。该方法通过平分三点形成的夹角,并设置一个距离在平分线上寻找到一点。如果长度为负值,则沿着反角,并设置一个距离在平分线上寻找到一点。如果长度为负值,则沿着反方向放置点。方向放置点。(3)ConstructAngleIntersection构造角度交点构造角度交点 通过给定的两个点和两个角度,可以在两条射线的交点处产生一个通过给定的两个点和两个角度,可以在两条射线的交点处产生一个点。两条射线由点和角度来确定。点。两条射线由点和角

13、度来确定。object.ConstructAngleIntersection (p1, angle1, p2, angle2 )(4)ConstructAngleDistance构造角度距离点构造角度距离点 通过一个给定点和一个相对点的绝对角度和距离,构造器可以惟一确定通过一个给定点和一个相对点的绝对角度和距离,构造器可以惟一确定一个新点。一个新点。object.ConstructAngleDistance (p, inAngle, distance )其它构造点的方法还包括其它构造点的方法还包括(5)ContructDeflection构造偏转角度点构造偏转角度点 给定一个基准线段,一个偏转

14、角度和一个距离,该方法将沿着偏给定一个基准线段,一个偏转角度和一个距离,该方法将沿着偏转角度的射线方向以给定距离设置一个新点。转角度的射线方向以给定距离设置一个新点。(6)ConstructDeflectionIntersection构造偏转角交点构造偏转角交点 该方法使用一条线段作为基线,从该基线的起始点和终点分别测量该方法使用一条线段作为基线,从该基线的起始点和终点分别测量偏转角度,引出两条射线,将两条射线的交点作为新点。与测量偏转角度,引出两条射线,将两条射线的交点作为新点。与测量中的前方交会定点法相同。中的前方交会定点法相同。(7)ConstructOffset构造偏移点构造偏移点(8

15、) ConstructParallel构造平行线上的点构造平行线上的点(9)ConstructPerpendicular构造垂直线上点构造垂直线上点(10)ConstructThreePointResection构造后方交会点构造后方交会点具体方法请参照课本自学。具体方法请参照课本自学。二、二、MultiPoint对象对象 MultiPoint点集对象是无序点的群集,它用于表示具有相同属性设点集对象是无序点的群集,它用于表示具有相同属性设置的同一组点。如一家公司不同的营业场所可以使用点集来表示。置的同一组点。如一家公司不同的营业场所可以使用点集来表示。 MultiPoint对象可以使用对象可以

16、使用Add方法来添加一个点到它的集合中去,方法来添加一个点到它的集合中去,这个过程需要使用这个过程需要使用IPointCollection接口来完成。接口来完成。IPointCollection pPointCollection;pPointCollection = New MultipointClass();Object Missing=Type.Missing;Object val=1;pPointCollection.AddPoint(point, ref Missing, ref val); 如同如同Point对象一样,对象一样,MultiPoint对象也对象也有众多的构造方法,这些构

17、造方法都在有众多的构造方法,这些构造方法都在IConstructMultipoint接口中定义,它们能够接口中定义,它们能够基于一个已经存在的几何对象来产生一个点基于一个已经存在的几何对象来产生一个点集。集。1.ConstructArcPoints构造圆弧点构造圆弧点 这个构造器通过给定的一段圆弧,返回出该圆弧的终止点、起始点、圆这个构造器通过给定的一段圆弧,返回出该圆弧的终止点、起始点、圆心和切线的交点等四个点对象心和切线的交点等四个点对象。object.ConstructArcPoints (a )2.ConstructDivideLength构造等长度点构造等长度点 这个方法通过给定的一

18、条曲线对象和已经定义的长度,返回所有这个方法通过给定的一条曲线对象和已经定义的长度,返回所有处于这条曲线上的点对象,这些点包含在一个点集对象中。处于这条曲线上的点对象,这些点包含在一个点集对象中。3.ConstructDivideEqual构造等分点构造等分点 这个构造器根据输入的一条曲线和需要返回的点的数目来产生一个点集对这个构造器根据输入的一条曲线和需要返回的点的数目来产生一个点集对象。象。object.ConstructDivideEqual (inCurve, numInnerPoints ) 4.ConstructTangent构造切线点构造切线点 这个方法用于产生一个点在圆上面的两

19、个切点。这个方法用于产生一个点在圆上面的两个切点。点与点群点与点群u 点是没有尺寸的,只有一对点是没有尺寸的,只有一对X、Y坐标值坐标值u 点群是点的集合点群是点的集合PointMultipoint with six points4.3 包络线(包络线(Envelopes)对象对象u 定义一个要素的空间范围(最小包围边界)定义一个要素的空间范围(最小包围边界)u 所有几何体都有封装边界所有几何体都有封装边界u 获得或设置用获得或设置用IGeometry:Envelope属性属性 包络线对象是一个矩形区域,它是作为任何一个几何形体的最小包络线对象是一个矩形区域,它是作为任何一个几何形体的最小边框

20、区域而存在,每一个边框区域而存在,每一个Geometry对象都有一个包络线对象,即使对象都有一个包络线对象,即使是包络线本身。常作为地图的视图或地理数据库的范围和用户交互操是包络线本身。常作为地图的视图或地理数据库的范围和用户交互操作的结果而被返回。作的结果而被返回。 Envelope通过它的最大和最小通过它的最大和最小X和和Y坐标来定义一个矩形区域。包坐标来定义一个矩形区域。包络线对象相对于它的空间参考而言总是直角的。包络线对象也定义了络线对象相对于它的空间参考而言总是直角的。包络线对象也定义了最大和最小的最大和最小的Z值和值和M值,这两个值可分别通过值,这两个值可分别通过IZAware和和

21、IMAware接口来定义。接口来定义。Geometry左下左下左上左上右上右上右下右下EnvelopeXMinXMaxYMinYMax几何形体的包络线定义几何形体的包络线定义 IEnvelope是是包络线对象的主要接口,它定义了包络线对象的主要接口,它定义了XMax、XMin、YMax和和YMin、Height和和Width属性,用于获得或设置一个已存在包络属性,用于获得或设置一个已存在包络线对象的空间参考。线对象的空间参考。 IEnvelope:Expand用于按比例缩放包络线范围产生新的包络线对象,用于按比例缩放包络线范围产生新的包络线对象,在缩放地图的视图操作中经常使用这个方法,如:在缩

22、放地图的视图操作中经常使用这个方法,如: pEnvelope.Expand(5,0,false) 该方法有三个参数,前两者是东西该方法有三个参数,前两者是东西dx和和dy,第三个参数是是否设置比,第三个参数是是否设置比例,若该值为例,若该值为false,则新的包络线对象的坐标变为:,则新的包络线对象的坐标变为: XMin=XMin-dx,YMin=YMin+dy Xmax=XMax+dx,Ymax=YMax+dy 若为若为true,则新的包络线的坐标为:,则新的包络线的坐标为: XMin=XMin-dx*Width/2,YMin=YMin-dy*Height/2 XMax=XMax+dx*Wi

23、dth/2,YMax=YMax+dy*height/2无论怎么变化,这两个包络线的中心都在同一位置。无论怎么变化,这两个包络线的中心都在同一位置。 IEnvelope:offset是一个偏移方法,它通过添加一个是一个偏移方法,它通过添加一个X和和Y值给值给XMin、XMax、YMin和和YMax,移动包络线本身。在移动过程中,包络线的面,移动包络线本身。在移动过程中,包络线的面积保持不变。积保持不变。 IEnvelope:CenterAt方法则是通过改变包络线的中心点来移动包络方法则是通过改变包络线的中心点来移动包络线对象。线对象。 IEnvelope接口还为包络线提供了拓扑运算方法接口还为包

24、络线提供了拓扑运算方法Intersect和和Union。IEnvelope:Intersect用于求两个包络线的相交部分,用于求两个包络线的相交部分,IEnvelope:Union用于返回两个包络线的并集,这两个方法返回的都是包络线对象。用于返回两个包络线的并集,这两个方法返回的都是包络线对象。 IEnvelope:PutCoords提供了一个构造包络线的方法,提供了一个构造包络线的方法,通过传入通过传入Xmin、YMin、XMax和和YMax四个点对象,返回四个点对象,返回一个包络线。一个包络线。 IEnvelope:QueryCoords则可以返回一个包络线的四个则可以返回一个包络线的四个

25、值。值。 Envelope对象也支持对象也支持IEnvelope2接口,这个接口提供了接口,这个接口提供了设置设置Z值和值和M值的属性。如值的属性。如PutMCoords和和PutZCoords用用于设置于设置M和和Z值。而值。而QueryMCoords和和QueryZCoords则可则可以查询包络线对象的以查询包络线对象的M和和Z值。值。4.4 曲线曲线Curve对象对象 除去点、点集和包络线对象外,几乎其它所有的几何除去点、点集和包络线对象外,几乎其它所有的几何形体都可以看做是曲线(形体都可以看做是曲线(Curve),),Curve是具有一维视是具有一维视图或者二维边界形状的几何对象,如图

26、或者二维边界形状的几何对象,如Line、Polyline、Polygon、CircularArc、BezierCurve、EllipticArc和和CircularArc等都是曲线的一种,这些对象都实现了等都是曲线的一种,这些对象都实现了ICurve接口。接口。 ArcMap几何形体几何形体SegmentsBezier curveLineCircular arc3 Rings (closed paths)2 Paths1 Poly1 LinePointsMultipointsPolygonsPolylinesu线段:在曲线的起点和终点之间线段:在曲线的起点和终点之间u线段集合成线段集合成 pa

27、ths/ringsuPaths/rings集合成集合成polylines/polygonsRing继承至path两点所确定的弧段ICurve接口接口 ICurve接口提供了操作任何一种一维形状或二维边界接口提供了操作任何一种一维形状或二维边界形状的属性和方法,但是它并不能用于产生一个新的曲线形状的属性和方法,但是它并不能用于产生一个新的曲线对象。对象。uLength属性:返回一个曲线对象的长度。属性:返回一个曲线对象的长度。u FromPoint和和ToPoint:获得和设置一个曲线的起始点:获得和设置一个曲线的起始点和终止点。和终止点。uReverseOrientation方法:改变一个曲线

28、的节点次序,方法:改变一个曲线的节点次序,即改变一个曲线对象的起始点和终止点的顺序。即改变一个曲线对象的起始点和终止点的顺序。u IsClosed属性:说明一个曲线的起始点和终止点是否在同一个位属性:说明一个曲线的起始点和终止点是否在同一个位置。置。Polygon可能在它们的组成对象中存在非连接情况,如组成一个可能在它们的组成对象中存在非连接情况,如组成一个Ring对象的两个对象的两个Segment,并没有首尾相连,而是分离的,并没有首尾相连,而是分离的,IsClosed属性不能检查这种情况。为保证属性不能检查这种情况。为保证Polygon和和Ring中不出现中不出现这种情况,需要保证它们是简

29、单几何对象。这种情况,需要保证它们是简单几何对象。u QueryPoint方法:依据特定的长度或比例来获得一个曲线对象上方法:依据特定的长度或比例来获得一个曲线对象上的某一点的位置。的某一点的位置。如果查询长度超过了曲线本身的长度,就需要设置如果查询长度超过了曲线本身的长度,就需要设置片段扩展。片段扩展。u GetSubcurve方法:复制一个曲线对象的某个特定部分方法:复制一个曲线对象的某个特定部分。u QueryTangent和和QueryNormal方法:得到基于曲线对象方法:得到基于曲线对象上某一点的曲线的切线和法线。上某一点的曲线的切线和法线。一、片段对象一、片段对象 片段(片段(S

30、egment)是由一个起始点、一个终止点以及定义两点之)是由一个起始点、一个终止点以及定义两点之间的曲线函数组成的一维几何形体对象,它是一条单一的曲线对象。间的曲线函数组成的一维几何形体对象,它是一条单一的曲线对象。 片段对象是一个抽象类。它可能是线性的,如线段(片段对象是一个抽象类。它可能是线性的,如线段(Line),也),也可能是非线性的,如圆弧(可能是非线性的,如圆弧(CircularArc)、椭圆弧()、椭圆弧(EllipticArc)和)和贝塞尔曲线(贝塞尔曲线(BezierCurve)等都是一种片段对象。)等都是一种片段对象。 这些片段对象可以独立存在,也可以用于构成其它几何形体对

31、象这些片段对象可以独立存在,也可以用于构成其它几何形体对象,如,如Path、Ring或或Polycurve等。一个片段对象可以有等。一个片段对象可以有Z、M和和ID值。值。 Segment也是也是Curve的一个子类,它从的一个子类,它从Curve类继承了最基本的属类继承了最基本的属性和方法,如性和方法,如FromPoint和和ToPoint确定了所有曲线的起点和终点。确定了所有曲线的起点和终点。 ISegment是是Segment对象的主要接口,它提供了两个方法,用于对象的主要接口,它提供了两个方法,用于将一个将一个Segment分割为两个或多个分割为两个或多个Segment,但原始的,但原

32、始的Segment并没并没有被破坏。有被破坏。 ISegment:SplitAtDistance方法需要传入一个给定长度或比率值方法需要传入一个给定长度或比率值,这个长度值用于在,这个长度值用于在Segment对象的起点和终点之间的路径上确定对象的起点和终点之间的路径上确定一个分割点,将一个分割点,将Segment对象分割为两个对象分割为两个Segment,可以通过该方,可以通过该方法的第三个和第四个参数,得到两个新的法的第三个和第四个参数,得到两个新的Segment对象。对象。 ISegment:SplitDivideLength可以将一个可以将一个Segment对象分割为不对象分割为不限数

33、目的新限数目的新Segment,这些新产生的,这些新产生的Segment是一个是一个Segment数组数组,而这个方法将返回一个指向数组中第一个元素的指针。下面的示例,而这个方法将返回一个指向数组中第一个元素的指针。下面的示例代码将一个代码将一个Segment对象分割为对象分割为5等份新的等份新的Segment。请同学们参阅。请同学们参阅参考资料参考资料P169页上的代码。页上的代码。 更复杂的几何形体对象,如更复杂的几何形体对象,如Ring 、Path、Polyline和和Polygon等等,都可由,都可由Segment对象集合来创建。其中,对象集合来创建。其中,Ring和和Path类支持类

34、支持ISegmentCollection接口,而接口,而Polyline和和Polygon则支持则支持IgeometryCollection接口。利用接口。利用ISegmentCollection接口定义的接口定义的AddSegment、RemoveSegment等方法,可以将一个等方法,可以将一个Segment集集合变成复杂度更高的集合形体对象。合变成复杂度更高的集合形体对象。1、CircularArc对象对象 该对象是一个圆弧,它是圆的一部分,如果使用该对象是一个圆弧,它是圆的一部分,如果使用CircularArc来表示一个整圆,则它的来表示一个整圆,则它的CentralAngle为为2,

35、且其起始点和终止点的位置是一个点。且其起始点和终止点的位置是一个点。 在几何对象中,在几何对象中,CircularArc是是EllipticArc的特殊情况的特殊情况。其主要属性如图:。其主要属性如图:IConstructCircularArc接口的五种构造器接口的五种构造器(总数为(总数为35种)种)(1)ConstructCircle构造器构造器 是产生一个圆对象的最简单的方法,通过传入是产生一个圆对象的最简单的方法,通过传入CenterPoint(圆心)和(圆心)和Radius(半径)两个属性,可以确(半径)两个属性,可以确定一个惟一的圆对象。定一个惟一的圆对象。(2)Construct

36、ArcDistance 通过传入一个起始点、中点和圆弧长度来产生一个新的通过传入一个起始点、中点和圆弧长度来产生一个新的圆弧对象,当然这个长度不能超过整个圆弧对象,当然这个长度不能超过整个2*radius。 (3)ConstructChordDistance 基于一个起始点、圆弧的弦长度、圆弧的方向和中心点基于一个起始点、圆弧的弦长度、圆弧的方向和中心点来产生一个新的圆弧对象。来产生一个新的圆弧对象。(4)ConstructEndPointsChordHeight 是使用一个起始点、一个终止点和一个弦的中点高度,是使用一个起始点、一个终止点和一个弦的中点高度,按照顺时针或逆时针的方向产生一个圆

37、弧对象。按照顺时针或逆时针的方向产生一个圆弧对象。(5)ConstructFilletPoint 可以产生两条线段或圆弧的内切线,这个方法要求传入可以产生两条线段或圆弧的内切线,这个方法要求传入两个两个Segment对象以及内切弧在两个对象以及内切弧在两个Segment上的点。上的点。2、Line对象对象 Line对象是最简单的片段,它是由起始点和终止对象是最简单的片段,它是由起始点和终止点决定的一条直线,它是一维几何对象点决定的一条直线,它是一维几何对象 Line是最简单和最常使用的片段对象,通常用是最简单和最常使用的片段对象,通常用于构造于构造Polyline、Polygon、Ring和和

38、Path对象等。对象等。 ILine是是Line对象主要支持的接口,它定义了一对象主要支持的接口,它定义了一系列用于构造和设置线段对象的属性和方法。系列用于构造和设置线段对象的属性和方法。u QueryCoords属性:返回通过一个直线上的起始点和终属性:返回通过一个直线上的起始点和终止点的坐标值;止点的坐标值;uPutCoords:设置线段两点的坐标:设置线段两点的坐标u Angle属性:返回线段对象与属性:返回线段对象与X轴的夹角。轴的夹角。 此外,此外,IConstructLine接口还提供了更两个更复杂的接口还提供了更两个更复杂的方法来产生一个线段。方法来产生一个线段。u Constr

39、uctAngleBisector方法:通过传入三个点对象,方法:通过传入三个点对象,构造一个夹角,然后通过这个夹角的顶点产生一个角平分构造一个夹角,然后通过这个夹角的顶点产生一个角平分线以及一个线段的长度。线以及一个线段的长度。uConstructExtended:可以用于扩展一个已:可以用于扩展一个已经存在的线段对象来产生一个新的线段。经存在的线段对象来产生一个新的线段。3、EllipticArc对象对象 EllipticArc(椭圆弧)是一个椭圆的一部分,椭圆是通(椭圆弧)是一个椭圆的一部分,椭圆是通过一个长轴、一个短轴、中心点和旋转角度值来确定的几何过一个长轴、一个短轴、中心点和旋转角度

40、值来确定的几何对象,如果旋转角度为对象,如果旋转角度为0,则椭圆对象的两个轴分别与,则椭圆对象的两个轴分别与X、Y轴重合。轴重合。 EllipticArc对象则还使用诸如对象则还使用诸如FromAngle、ToAngle两两个参数来确定。个参数来确定。IEllipticArc构造器方法构造器方法(1)ConstructEnvelope 方法:通过给定的包络线对象方法:通过给定的包络线对象来产生一个内置的椭圆对象。来产生一个内置的椭圆对象。(2)ConstructTwoPointsEnvelope方法方法 :利用起始点、:利用起始点、终止点、包络线和一个方向参数来产生一个椭圆弧。终止点、包络线和

41、一个方向参数来产生一个椭圆弧。4.BezierCurve对象对象 贝塞尔曲线是由四个控制点定义的,由一组三贝塞尔曲线是由四个控制点定义的,由一组三次多项式描述的参数曲线,用于描述等高线或河流次多项式描述的参数曲线,用于描述等高线或河流等平滑变化的线对象。等平滑变化的线对象。 控制点控制点0和控制点和控制点1构成的构成的线段和控制点线段和控制点2和控制点和控制点3构成构成的线段相切。的线段相切。 这四个控制点产生了一条这四个控制点产生了一条平滑的曲线。平滑的曲线。IBezierCurve接口定义了用于设置和查询曲线属性的方接口定义了用于设置和查询曲线属性的方法,法,IBezierCurve:Pu

42、tCoord方法用于改变一个已经方法用于改变一个已经存在的贝塞尔曲线。存在的贝塞尔曲线。 还可以利用还可以利用IConstructBezierCurve接口定义的方接口定义的方法产生贝塞尔曲线。法产生贝塞尔曲线。5.路径(路径(Path)对象)对象 路径是连续片段对象的集合,除了路径的第一个和最后路径是连续片段对象的集合,除了路径的第一个和最后一个组成片段外,每一个片段的起始点都是前一个片段的终一个组成片段外,每一个片段的起始点都是前一个片段的终止点,即路径对象中的片段不能出现分离的情况。止点,即路径对象中的片段不能出现分离的情况。 路径可以是任意数目的路径可以是任意数目的Line、Circu

43、larArc、EllipticArc和和BezierCurve的组合。一个或多个路径对象组的组合。一个或多个路径对象组成一个成一个Polyline。 IPath是是Path对象的主要接口,它定义了设置路径对象对象的主要接口,它定义了设置路径对象的多个方法。的多个方法。uGeneralizes方法:可以抽象化一个平滑的路径对象,即方法:可以抽象化一个平滑的路径对象,即可以将一个平滑的曲线变成为几条相连的线段。可以将一个平滑的曲线变成为几条相连的线段。u Smooth方法:将一个非平滑的路径对象平滑化。方法:将一个非平滑的路径对象平滑化。u SmoothLocal方法:可以只将某个连接点处平滑化,

44、而方法:可以只将某个连接点处平滑化,而非后者一样平滑整条路径对象。非后者一样平滑整条路径对象。6.环环(Ring)对象对象 环是一种封闭的路径对象,它的起始点和终止点坐标值环是一种封闭的路径对象,它的起始点和终止点坐标值是一样的,这种对象具有是一样的,这种对象具有“内部内部”和和“外部外部”属性。环是属性。环是产生产生Polygon(多边形)的元素。(多边形)的元素。 组成环的片段对象是有序的,环对象也实现了组成环的片段对象是有序的,环对象也实现了IPath接接口。环必须是封闭的路径,因此它具有以下几个关键特征:口。环必须是封闭的路径,因此它具有以下几个关键特征:u 它包含一系列首尾相连的同方

45、向的片段对象它包含一系列首尾相连的同方向的片段对象u 它是封闭的,即起始点与终止点是同一点它是封闭的,即起始点与终止点是同一点u 它不能自相交它不能自相交 IRing接口为接口为Ring所实现,它定义了多个处理环对象的所实现,它定义了多个处理环对象的方法:方法: IRing的的Close方法可以添加一条线段到一个开放的环对方法可以添加一条线段到一个开放的环对象上,以连接这个环的起始点和终止点。象上,以连接这个环的起始点和终止点。 一个环的片段(一个环的片段(segment)至少应该有)至少应该有3个(三角形环是个(三角形环是最简单的环对象),而这个方法可以在只有两个片段被设最简单的环对象),而

46、这个方法可以在只有两个片段被设置的情况下自动产生第三个片段以封闭环对象。置的情况下自动产生第三个片段以封闭环对象。 在在Geometry中,封闭的几何形体有三种,即中,封闭的几何形体有三种,即Envelope、Ring和和Polygon,因此它们拥有一个别的几何对象没有的,因此它们拥有一个别的几何对象没有的特征,即面积,因此都实现了特征,即面积,因此都实现了IArea接口来获取与面积有关接口来获取与面积有关的信息。的信息。uArea:返回一个具有封闭特性几何形体对象的面积:返回一个具有封闭特性几何形体对象的面积uCentralPoid:返回这些几何形体的重心。:返回这些几何形体的重心。uLab

47、elPoint:返回这些几何形体的标注点。:返回这些几何形体的标注点。6.PolyCurve对象对象 PolyCurve是一个抽象类,它代表了一个是一个抽象类,它代表了一个Polyline或或Polygon对象的边框线,它是由多个曲线构成的对象,对象的边框线,它是由多个曲线构成的对象,Polyline的每一个组成部分都是一个有效的路径对象;的每一个组成部分都是一个有效的路径对象;Polygon的每个组成部分则是环对象。的每个组成部分则是环对象。IPolycurve接口提供了处理这两种对象的一般方法:接口提供了处理这两种对象的一般方法:u SplitAtDistance和和SplitAtPoin

48、t:通过指定一个距离:通过指定一个距离或点的方式添加一个新的顶点到或点的方式添加一个新的顶点到Polycurve上。上。u Generalize:用于给一个:用于给一个Polycurve对象进行抽象化整对象进行抽象化整形。形。7.Polyline对象对象 Polyline(多义线多义线)是相连或不相连的路径对象的有序集是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连的路径和多个相合,它可以分别是单个路径、多个不相连的路径和多个相连路径的集合。连路径的集合。 这个对象可以用于表示具有线状特征的对象,如河流、这个对象可以用于表示具有线状特征的对象,如河流、公路和等高线等。公路和

49、等高线等。 用户可以使用单路径构成的多义线(用户可以使用单路径构成的多义线(Polyline)来表示简)来表示简单线,如简单公路;单线,如简单公路;使用具有多个路径的多义线来表示复杂线类型,如具有多使用具有多个路径的多义线来表示复杂线类型,如具有多个支流的河流等。个支流的河流等。 一个有效的一个有效的Polyline对象需要满足以下的准则:对象需要满足以下的准则:u 组成组成Polyline的的Path对象都是有效的对象都是有效的u Path不会重合、相交或自相交不会重合、相交或自相交u 多个多个Path对象可以连接于某一个节点,也可以是分离的对象可以连接于某一个节点,也可以是分离的u 长度为

50、长度为0的的Path对象是不被允许的。对象是不被允许的。 IPolyline是是Polyline类的主要接口,它定义了两个主类的主要接口,它定义了两个主要方法。要方法。 其中其中Reshape方法可以使用一个路径对象给一个存在的方法可以使用一个路径对象给一个存在的Polyline整形。另一个方法是整形。另一个方法是SimplifyNetwork用于简化网用于简化网络。络。 Polyline可以使用可以使用IGeometryCollection接口添加路径接口添加路径对象来产生,当使用这个接口的时候,需要注意以下的情对象来产生,当使用这个接口的时候,需要注意以下的情况:况:u 每一个路径对象都必

51、须是有效的,或者这个路径对象在每一个路径对象都必须是有效的,或者这个路径对象在使用使用IPath:Simplify方法后有效。方法后有效。u 由于由于Polyline是路径对象的有序集合,因此在添加路径是路径对象的有序集合,因此在添加路径时,必须注意顺序和方向。时,必须注意顺序和方向。u 为了保证为了保证Polyline是有效的,可以在产生这个形状后使是有效的,可以在产生这个形状后使用用Simplify方法。方法。8.Polygon对象对象Polygon多边形是环(多边形是环(Ring)的集合,)的集合,Polygon可以由一个可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内或者

52、多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。外环之间不能重叠。 对于一个给定的点而言,它总是在多边形对于一个给定的点而言,它总是在多边形“内部内部”、“外部外部”或者或者“边界上边界上”。 Polygon通常用于描述具有面状通常用于描述具有面状特性的要素。特性的要素。一个有效的多边形符合下面的标注:一个有效的多边形符合下面的标注:u 每一个构成的环都是有效的每一个构成的环都是有效的u环之间的边界不能重合环之间的边界不能重合u外部环是有方向的,它是顺时针方向外部环是有方向的,它是顺时针方向u内部环在一个多边形中定义了一个洞,它是逆时针方向的内部环在一个多边形中定义了一个洞,

53、它是逆时针方向的u面积为面积为0的环是不允许的的环是不允许的u 多边形上存在一个片段对象或路径对象是无效的多边形上存在一个片段对象或路径对象是无效的Paths and polygonsPolylinesn由一组闭合或不闭合的由一组闭合或不闭合的Paths组成组成Polygonsn由一个或多个由一个或多个rings组成组成Path with three segmentsPolygon with seven rings几何形体对象模型图几何形体对象模型图PointMultiPointRingPathSegmentGeometryEnvelopeCurvePolylineLineBezierCurv

54、eCircularArcPolycurve*Polygon*Geometrycollection*4.5 Geometry集合接口集合接口 除了除了Point对象外,其它的几何形体对象都可以通过集对象外,其它的几何形体对象都可以通过集合的方式构成。如点集对象是点的集合,路径是片段对象合的方式构成。如点集对象是点的集合,路径是片段对象的集合,多义线是路径的集合。的集合,多义线是路径的集合。 在在AE中的这些中的这些Geometry类型的集合接口主要有类型的集合接口主要有IGeometryCollection、ISegmentCollection和和IPointCollection三个,这些接口揭

55、示出三个,这些接口揭示出AE几何对象模型的几何对象模型的实质它们是一种组合构成的形式,但这种组合并不一定实质它们是一种组合构成的形式,但这种组合并不一定按照严格的次序完成。按照严格的次序完成。(一)(一)IGeometryCollection接口接口 该接口是被多种结合对象实现的接口,它们包括该接口是被多种结合对象实现的接口,它们包括Polygons、Polylines、Multipoints、MultiPatches、TriangleStrips、TriangleFans和和GeometryBags等。等。 它的方法可以让程序员添加、改变和移除一个几何对象它的方法可以让程序员添加、改变和移除

56、一个几何对象的组成元素,即它们的子对象。这些元素包括:的组成元素,即它们的子对象。这些元素包括:u 对于对于Polygon而言,每个组成的而言,每个组成的Geometry,即子对象是,即子对象是Ring对象对象u 对于对于Polyline而言,其子对象是而言,其子对象是Pathu 对于对于MultiPoint而言,其子对象是而言,其子对象是Pointu 对于对于MultiPath而言,其组成的而言,其组成的Geometry是是TriangleFan、TriangleStrip或或Ring(MultiPath是是3维几何对象)维几何对象)u 对于对于GeometryBag对象而言,组成它的对象而

57、言,组成它的Geometry可以是可以是任何类型的几何形体对象。任何类型的几何形体对象。u Geometry属性:通过一个索引值来返回一个组成这个几属性:通过一个索引值来返回一个组成这个几何对象的某个子对象何对象的某个子对象u GeometryCount:返回这些子对象的数目:返回这些子对象的数目u AddGeometry和和AddGeometries方法:向一个几何对象方法:向一个几何对象添加子对象,前者一次只能添加一个几何对象,后者是一次添加子对象,前者一次只能添加一个几何对象,后者是一次添加一个几何数组添加一个几何数组u AddGeometryCollection:将一个多边形中所有的子

58、对:将一个多边形中所有的子对象的引用添加到某个多边形中,即可以合并两个多边形象的引用添加到某个多边形中,即可以合并两个多边形(二)(二)ISegmentCollection接口接口 它被它被Path、Ring、Polyline和和Polygon四个类所实现四个类所实现,因此,它们都可以被称作是片段几何对象,使用这个接,因此,它们都可以被称作是片段几何对象,使用这个接口可以处理片段几何对象中的每一个组成元素口可以处理片段几何对象中的每一个组成元素Segment对象。对象。u Segment属性:需要输入一个子对象的索引值属性:需要输入一个子对象的索引值u EnumSegments返回一个返回一个

59、SegmentCollection对象中的对象中的片段对象,它作为一个枚举值返回片段对象,它作为一个枚举值返回u AddSegment方法:用于向一个方法:用于向一个SegmentCollection对对象中添加单个的片段象中添加单个的片段u AddSegments:添加一个片段数组对象:添加一个片段数组对象u InsertSegments、InsertSegmentCollection、RemoveSegments、ReplaceSegments、ReplaceSegmentCollection、SetSegmentCollection和和SetSegments都是用于改变和重新排列这个片段

60、集合对象都是用于改变和重新排列这个片段集合对象中的片段。中的片段。(三)(三)IPointCollection接口接口 被多个几何对象类所实现,这些对象包括都可以由多个被多个几何对象类所实现,这些对象包括都可以由多个点构成,如点构成,如Multipoints、Paths、Rings、Polylines、Polygons、TriangleFans、TriangleStripes和和MutiPatches等,它们都可以称为等,它们都可以称为PointCollection对象。对象。 PointCollection对象可以对象可以IPointCollection接口定义的接口定义的方法获取、添加、插

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论