ArcGIS几何形体理解



《ArcGIS几何形体理解》由会员分享,可在线阅读,更多相关《ArcGIS几何形体理解(90页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,*,*,第八章使用几何体,,,课程预览,,,ArcMap,几何对象的类型,,操作:用代码创建新的几何体,,画几何体,,,Geometry,是,AO,中使用最为广泛的对象集之一,用户在新建、删除、编辑和进行地理分析的时候,就是在处理一个包含几何形体的矢量对象;,,除了显示要素外,在空间选择、要素着色制作专题图、标注编辑等很多过程中也需要,Geometry,参与。,在,Geometry,模型中,几何形体对象被分为两种层次,一是构成要素形状的,几何图形,,另一种是组成这些形状的,组成部分,。,ArcM
2、ap,几何形体,,线段:在曲线的起点和终点之间,,线段集合成,paths/rings,,Paths/rings,集合成,lines/polygons,,可以在任何层次上编辑,Segments,Bezier curve,Line,Circular arc,3 Rings (closed paths),2 Paths,1 Poly,1 Line,Points,Multipoints,Polygons,Polylines,两点所确定的弧段,Ring,继承至,path,几何形体对象模型图,Point,MultiPoint,Ring,Path,Segment,Geometry,Envelope,Cur
3、ve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,Geometry,,collection,*,一、,Point,对象,,,,Point,对象,是一个,0,维的几何图形,具有,X,、,Y,坐标值,以及可选的属性,如高程(,Z,值),测量值(,M,)和,ID,号,可以用于描述只需要精确定位的对象,,如一个城市在全国的位置,等。,,相关类说明,1,、,IPoint,接口,,定义了,Point,对象的属性和方法:,,ID,属性:,返回点对象的,ID,号;,,M,、,Z,值:,返回点的测量号和高程值,,,X,和,Y,:
4、获得一个点的,X,和,Y,的坐标值,,,PutCoords,:,用于设置一个点的,X,、,Y,坐标值,,,ConstrainAngle,和,ConstrainDistance,方法可以使用参数改变已经存在点的位置。如,ConstrainAngle,只要确定旋转角度和描点等参数,就可以精确移动。,2,、,IConstructPoint,接口,,,AO,中,Geometry,模型的一个重要特点是它具有一套丰富的,利用已经存在的几何对象的距离、角度和空间关系,生成新的几何形体对象的方法。,,使用这些方法常常涉及使用角度和偏转角。在,AO,编写程序时,角度使用的是,弧度单位,,而长度单位使用,地图投影
5、单位,。,,,IConstructPoint,接口,可以使用多达,10,种方法来创建所需要的点,下面需要介绍几种点的构造方法:,(,1,),ConstructAlong,沿线创建方法,,,沿线创建法,是基于一个曲线(,Curve,)上起始点对象,通过给定距离、比例和扩展类型,沿着曲线类创建一个新点。如果距离比曲线的长度要长,那么点将沿着它的切线生成。,object,.,ConstructAlong,,(,curve,,,extension,,,distance,,,asRatio,),(,2,),ConstructAngleBisector,角平分线创建法,,,这种方法使用三个点,即起始点(,
6、FromPoint,)、通过点(,Through Point,)和终止点(,ToPoint,)。该方法通过平分三点形成的夹角,并设置,一个距离,在平分线寻找到一点。如果长度为负值,则沿着反方向放置点。,object,.,ConstructAngleBisector,,(,from,,,through,,,to,,,distance,,,useAcuteAngle,),(,3,),ConstructAngleIntersection,构造角度交点,,通过给定的两个点和两个角度,这个方法可以在两条射线的交点处产生一个点。两条射线由点和角度来确定。,object,.,ConstructAngleIn
7、tersection,,(,p1,,,angle1,,,p2,,,angle2,),(,4,),ConstructAngleDistance,构造角度距离点,,通过一个给定点和一个相对点的绝对角度和距离,构造器可以惟一确定一个新点。,object,.,ConstructAngleDistance,,(,p,,,inAngle,,,distance,),(,5,),ConstructDeflection,构造偏角度点,,给定一个基准线段,一个偏转角度和一个距离,该方法将沿着偏转角度和射线方向可以一定距离设置一个新点。,object,.,ConstructDeflection,,(,baseLin
8、e,,,distance,,,inAngle,),(,6,),ConstructDeflectionIntersection,构造偏转角交点,,,这种方法使用一条线段作为基准线,从该基准线的起始点和终点分别测量偏转角度,引出两条射线,两条射线相交点为新点。这个方法的,OnRightSide,参数可以确定点在基线的方位。,object,.,ConstructDeflectionIntersection,,(,baseLine,,,startAngle,,,endAngle,,,OnRightSide,),(,7,),ConstructOffset,构造偏移点,,给定一条路径,沿着曲线的距离或者比
9、例,然后进行一段水平偏移,如果,Offset,值为正,则该点向右偏移;如果,Offset,值为负,则向左水平偏移。,object,.,ConstructOffset,,(,curve,,,extension,,,distance,,,asRatio,,,Offset,),(,8,),ConstructParallel,构造平行线上的点,,构造平行线上点方法是给定一条直线路径,Path,,一个参考点,Point,及一段距离或比率,该构造器将在平行线上构造出一个新点。,object,.,ConstructParallel,,(,Segment,,,extension,,,start,,,dista
10、nce,),二、,MultiPoint,对象,,,MultiPoint,点集对象,是无序点的群集,它用于表示具有相同属性设置的同一组点。,如一家公司不同的营业场所可以使用点集来表示,。,,MultiPoint,对象可以使用,Add,方法来添加一个点到它的集合中去,这个过程需要使用,IPointCollection,接口来完成。,Dim,pPointCollection,As,IPointCollection,,Set,pPointCollection,= New Multipoint,,pPointCollection.AddPoint,,pPoint,如同,Point,对象一样,,Multi
11、Point,对象也有众多的构造方法,这些构造方法都在,IConstructMultipoint,接口中定义,它们能够基于一个已经存在的几何对象来产生一个点集。,1.ConstructArcPoints,构造圆弧点,,这个构造器通过给定的一段圆弧,返回出该圆弧的终止点、起始点、圆心和切线的交点等四个点对象。,object,.,ConstructArcPoints,,(,a,),A,:,ICircularArc,,2.ConstructDivideLength,构造等长度点,,这个方法通过给定的一条曲线对象和已经定义的长度,返回所有处于这条曲线上的点对象,这些点包含在一个点集对象中。,object
12、,.,ConstructDivideLength,,(,inCurve,,,separationDistance,),3.ConstructDivideEqual,构造等分点,,这个构造器根据输入的一条曲线和需要返回的点的数目来产生一个点集对象。,object,.,ConstructDivideEqual,,(,inCurve,,,numInnerPoints,),,4.ConstructTangent,构造切线点,,这个方法用于产生一个点在圆上面的两个切点。,object,.,ConstructTangent,,(,inCurve,,,p,),,点与点群,,点是没有尺寸的,只有一对,X,、,
13、Y,坐标值,,点群是点的集合,Point,Multipoint with,,six points,Dim,pPoint,As,IPoint,,Set,pPoint =,New,Point,,pPoint.X = 300,,pPoint.Y = 450,,,Dim,pMultiPts,As,IPointCollection,,Set,pMultiPts =,New,MultiPoint,,pMultiPts.AddPoint pPoint,三、几何对象的组成部分,——,曲线,Curve,,,除去点、点集和封边界对象外,几乎其他所有的几何形体都可以看做是曲线(,Curve,),,,,Curve,是
14、具有一维视图或者二维边界形状的几何对象,如,Line,、,Polyline,、,Polygon,、,CircularArc,、,BezierCurve,、,EllipticArc,和,CircularArc,等都是曲线的一种。,,这些对象都实现了,ICurve,接口。,ArcMap,几何形体,,线段:在曲线的起点和终点之间,,线段集合成,paths/rings,,Paths/rings,集合成,lines/polygons,,可以在任何层次上编辑,Segments,Bezier curve,Line,Circular arc,3 Rings (closed paths),2 Paths,1
15、Poly,1 Line,Points,Multipoints,Polygons,Polylines,两点所确定的弧段,Ring,继承至,path,ICurve,接口,,,ICurve,接口提供了操作任何一种一维形状或二维边界形状的属性和方法,但是它并不能用于产生一个新的曲线对象。,,Length,属性:,返回一个曲线对象的长度,,,FromPoint,和,ToPoint,:,获得和设置一个曲线的起始点和终止点,,ReverseOrientation,方法,:改变一个曲线的节点次序,即改变一个曲线对象的起始点和终止点顺序,,,IsClosed,属性,:说明一个曲线的起始点和终止点是否在同一个位置
16、(除了,Polygon,),,,QueryPoint,方法:依据特定的长度或比例来获得一个曲线对象上的某一点的位置,,Dim,pCurve,As,ICurve,,,Dim,pOutPoint,As,IPoint,,Set,pOutPoint,= New Point,,,pCurve.QueryPoint,,esriSegmentExtension.esriNoExtension,, 2, False,,pOutPoint,如果查询长度超过了曲线本身的长度,就需要设置片段扩展。,,GetSubcurve,方法:,复制一个曲线对象的某个特定部分,,,QueryTangent,和,QueryNorm
17、al,方法,:得到基于曲线对象上某一点的曲线的切线和法线。,(一)片段对象,,,片段(,Segment,),是由一个起始点、一个终止点以及定义两点之间的曲线的函数组成的一维几何形体对象,它是一条单一的曲线对象,,片段对象是一个抽象类,,,它可能是,线性的,,如线段(,Line,);,,也可能是,非线性的,,如圆弧(,CircularArc,)、椭圆弧(,EllipticArc,)和贝塞尔曲线(,BezierCurve,)等都是一种片段对象。,ArcMap,几何形体,,线段:在曲线的起点和终点之间,,线段集合成,paths/rings,,Paths/rings,集合成,lines/polygon
18、s,,可以在任何层次上编辑,Segments,Bezier curve,Line,Circular arc,3 Rings (closed paths),2 Paths,1 Poly,1 Line,Points,Multipoints,Polygons,Polylines,两点所确定的弧段,Ring,继承至,path,1,、,CircularArc,对象,,,该对象是一个圆弧,它是圆的一部分,如果使用,CircularArc,来表示一个整圆,则它的,CentralAngle,为,2π,,且其起始点和终止点的位置是一个点。,,在几何对象中,,CircularArc,是,EllipticArc,
19、的特殊情况。其,主要属性,如图:,IConstructCircularArc,接口的一些构造器:,,(,1,),ConstructCircle,构造器,,是产生一个圆对象的最简单的方法,通过传入,CenterPoint,(圆心)和,Radius,(半径)两个属性,可以确定一个惟一的圆对象。,object,.,ConstructCircle,,(,CenterPoint,,,Radius,,,isCCW,),,(,2,),ConstructArcDistance,,,通过传入一个起始点、中点和圆弧长度来产生一个新的圆弧对象,当然这个长度不能超过整个,2*π*radius,。,object,.,C
20、onstructArcDistance,,(,Center,,,from,,,isCCW,,,arcDistance,),,(,3,),ConstructChordDistance,,,,基于一个起始点、圆弧的弦长度、圆弧的方向和中心点来产生一个新的圆弧对象。,object,.,ConstructChordDistance,,(,Center,,,from,,,isCCW,,,chordDistance,),(,4,),ConstructEndPointsChordHeight,,,,是使用一个起始点、一个终止点和一个弦的中点高度,按照顺时针或逆时针的方向产生一个圆弧对象。,object,.,
21、ConstructEndPointsChordHeight,,(,from,,,to,,,isCCW,,,ChordHeight,),(,5,),ConstructFilletPoint,,,,可以产生两条线段或圆弧的内切线,这个方法要求传入两个,Segment,对象以及内切弧在两个,Segment,上的点。,object,.,ConstructFilletPoint,,(,s1,,,s2,,,from,,,hintPoint,),(,6,),ConstructTangentAndPoint,,,,可以相切于一个片段对象某点的圆弧。,object,.,ConstructTangentAndPo
22、int,,(,s,,,atFrom,,,p,),(,7,),ConstructThreePoints,,,,通过三个给定的点对象来产生一个惟一的圆弧,这三个点分别是起始点、终止点和圆弧上的任一点,这个点处于起始点和终止点中间的某一位置。,object,.,ConstructThreePoints,,(,from,,,middle,,,to,,,useExistingCenter,),,2,、,Line,对象,,,Line,对象,是最简单的片段,它是由起始点和终止点决定的一条直线,它是一维几何对象,,,Line,是最简单和最常使用的片段对象,通常用于构造,Polyline,、,Polygon,、
23、,Ring,和,Path,对象等。,,,ILine,是,Line,对象主要支持的接口,它定义了一系列用于构造和设置线段对象的属性和方法。,,QueryCoords,属性,:返回通过一个直线上的起始点和终止点的坐标值;,,PutCoords,:设置线段两点的坐标,,,Angle,属性,:返回线段对象与,X,轴的夹角。,此外,,IConstructLine,接口还提供了更两个更复杂的方法来产生一个线段。,,,ConstructAngleBisector,方法:,通过传入三个点对象,构造一个夹角,然后通过这个夹角的顶点产生一个角平分线以及一个线段的长度。,object,.,ConstructAngl
24、eBisector,,(,from,,,through,,,to,,,Length,,,useAcuteAngle,),,ConstructExtended,:,可以用于扩展一个已经存在的线段对象来产生一个新的线段。,,object,.,ConstructExtended,,(,inLine,,,extendHow,),,3,、,EllipticArc,对象,,,EllipticArc,(椭圆弧),是一个椭圆的一部分,椭圆是通过一个长轴、一个短轴、中心点和旋转角度值来确定的几何对象,它是椭圆弧的特例,如果旋转角度为,0,,则椭圆对象的两个轴分别与,X,、,Y,轴重合。,,,EllipticAr
25、c,对象则还使用诸如,FromAngle,、,ToAngle,两个参数来确定。,4,、,BezierCurve,对象,,贝塞尔曲线是由四个控制点定义的,由一组三次多项式描述的参数曲线,用于描述等高线或河流等平滑变化的线对象。,控制点,0,和控制点,1,构成的线段和控制点,2,和控制点,3,构成的线段相切。,,这四个控制点产生了一条平滑的曲线。,由起点、终点和方程定义三个方面组成,,,,子类,: Line,,BezierCurve,,,CircularArc,,线段用来创建其它的几个对象,,,Paths,,polylines,, rings, and polygons,,Dim,,pSegmen
26、t,,As,,ILine,,Set,,pSegment,=,New,Line,,,pSegment.FromPoint,=,pPointA,,,pSegment.ToPoint,=,pPointB,Segments,From,To,From,To,(二)路径(,Path,)对象,,,路径,是连续片段对象的集合,除了路径的第一个和最后一个组成片段外,每一个片段的起始点都是前一个片段的终止点,即,路径对象中的片段不能出现分离的情况,。,,路径可以是任意数目的,Line,、,CircularArc,、,EllipticArc,和,BezierCurve,的组合。一个或多个路径对象组成一个,Polyl
27、ine,。,,IPath,是,Path,对象的主要接口,它定义了设置一个路径对象的多个方法。,,Generalizes,方法:,可以抽象化一个平滑的路径对象,即可以将一个平滑的曲线变成抽象为几条相连的线段,,,Smooth,方法,:将一个非平滑的路径对象平滑化,,,SmoothLocal,方法,:可以只将某个连接点处平滑化,而非后者一样平滑整条路径对象。,(三)环(,Ring,)对象,,,环,是一种封闭的路径对象,它的起始点和终止点坐标值是一样的,这种对象具有“内部”和“外部”属性。环是,产生,Polygon,(多边形),的元素。,,组成环的片段对象是有序的,环对象也实现了,IPath,接口,
28、。环必须是封闭的路径,因此它具有以下几个关键特征:,它包含一系列首尾相连的同方向的片段对象,,它是封闭的,即起始点与终止点是同一点,,它不能只相交,,IRing,接口,为,Ring,所实现,它定义了多个处理环对象的方法:,,,IRing,的,Close,方法,可以添加一条线段到一个开放的环对象上,以连接这个环的起始点和终止点。,一个环的片段至少应该有,3,个(三角形环是最简单的环对象),而这个方法可以在只有两个片段被设置的情况下自动产生第三个片段以封闭环对象。,在,Geometry,,封闭的几何形体有三种,即,Envelope,、,Ring,和,Polygon,,因此它们拥有一个别的几何对象没
29、有的特征,即面积,因此都实现了,IArea,接口,来获取与面积有关的信息。,,Area,:,返回一个具有封闭特性几何形体对象的面积,,CentralPoid,:,返回这些几何形体的重心。,,LabelPoint,:,返回这些几何形体的标注点。,(四),PolyCurve,对象,,,PolyCurve,是一个抽象类,它代表了一个,Polyline,或,Polygon,对象的边框线,它是由多个曲线构成的对象,,Polyline,的每一个组成部分都是一个有效的路径对象;,,,Polygon,的每个组成部分则是环对象。,,,IPolycurve,接口,提供了处理这两种对象的一般方法:,几何形体对象模型
30、图,Point,MultiPoint,Ring,Path,Segment,Geometry,Envelope,Curve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,Geometry,,collection,*,,SplitAtDistance,和,SplitAtPoint,:,通过指定一个距离或点的方式添加一个新的顶点到,Polycurve,上。,,,Generalize,:用于给一个,Polycurve,对象进行抽象化整形。,,Polyline,多义线,是相连或不相连的路径对象的有序集合,它可以分别是单个路
31、径、多个不相连的路径和多个相连路径的集合。,,这个对象可以用于表示具有线状特征的对象,如河流、公路和等高线等。,,用户可以使用,单路径构成的多义线,(,Polyline,)来表示简单线,如简单公路;,,使用具有,多个路径的多义线,来表示复杂线类型,如具有单个支流的河流等。,1,、,Polyline,多义线,一个有效的,Polyline,对象需要满足以下的准则:,,组成,Polyline,的,Path,对象都是有效的,,,Path,不会重合、相交或自相交,,多个,Path,对象可以连接于某一个节点,也可以是分离的,,长度为,0,的,Path,对象是不被允许的。,,IPolyline,是,Poly
32、line,类的主要接口,它定义了两个主要方法。,,其中,Reshape,方法,可以使用一个路径对象给一个存在的,Polyline,整形,,Polyline,可以使用,IGeometryCollection,接口添加路径对象来产生,当使用这个接口的时候,需要,注意以下的情况,:,,每一个路径对象都必须是有效的,或者这个路径对象在使用,IPath,::,Simplify,方法后有效,,由于,Polyline,是路径对象的有序集合,因此在添加路径时,必须注意顺序和方向,,为了保证,Polyline,是有效的,可以在产生这个形状后使用,Simplify,方法,',产生构造线段的点,,Dim pPoin
33、t1 As,IPoint,,Dim pPoint2 As,IPoint,,,Set pPoint1 = New Point,,pPoint1.PutCoords 100, 20,,,Set pPoint2 = New Point,,pPoint2.PutCoords 20, 310,,,Dim,pPolyline,As,IGeometryCollection,,Set,pPolyline,= New,Polyline,,,Dim,pPath,As,ISegmentCollection,,Set,pPath,= New Path,,',产生线段对象,将其添加到路径对象,,Dim,pLine,As
34、,ILine,,Set,pLine,= New Line,,pLine.PutCoords,pPoint1, pPoint2,,pPath.AddSegment,,pLine,,,',将路径对象添加到多义线对象,,pPolyline.AddGeometry,,pPath,,2,、,Polygon,对象,,,,Polygon,多边形,是环(,Ring,)的集合,环是一种封闭的路径。,,,Polygon,可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。,,对于一个给定的点而言,它总是在多边形“内部”、“外部”或者“边界上”。它通常用于描述具有面状特性的要素。,一个有
35、效的多边形,符合下面的标注,:,,每一个构成的环都是有效的,,环之间的边界不能重合,,外部环是有方向的,它是顺时针方向,,内部环在一个多边形中定义了一个洞,它是逆时针方向的,,面积为,0,的环是不允许的,,多边形存在一个片段对象或路径对象是无效的,Paths and polygons,Polylines,,由一组闭合或不闭合的,Paths,组成,,Polygons,,由一个或多个,rings,组成,Path with,,four segments,Polygon with seven rings,几何形体对象模型图,Point,MultiPoint,Ring,Path,Segment,Geom
36、etry,Envelope,Curve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,Geometry,,collection,*,四、封装边界(,Envelopes,),,定义一个要素的空间范围(最小包围边界),,,所有几何体都有封装边界,,获得或设置用,IGeometry,::,Envelope,属性,,封装边界(包络线)对象,是一个矩形区域,它是作为任何一个几何形体的最小边框区域而存在的,每一个,Geometry,对象都有一个封装边界对象,即使是封装边界本身。,Dim,,pEnvelope,,As,,IEn
37、velope,,Set,,pEnvelope,=,pLine.Envelope,Xmin,,,Ymax,,Xmax,,,Ymin,几何体的所有点的坐标最大、最小值构成的空间范围,应用案例(,Zooming In to a Feature,),,使用,a shape,的,Envelope,属性获得范围,,用一个封装边界的,ActiveView,范围属性设置,Feature,Geometry,Envelope,pMxDoc.ActiveView.Extent = pFeature.Shape.Envelope,,pMxDoc.ActiveView.Refresh,封装边界是一个几何体,继承至几何体
38、,而封装边界是几何体的一个组成部分,一个要素包括属性和图形信息,问题:,,封装边界是否有自己的封装边界?,,回答:,有。,五、集合接口,,,除了,Point,对象外,其他的几何形体对象都是可以通过,集合的方式构成,的。如点集对象是点的集合,路径是片段对象的集合,多义线是路径的集合。,,在,AO,中的这些,Geometry,类型的集合接口主要有,IGeometryCollection,、,ISegmentCollection,和,IPointCollection,三个,这些接口揭示出,ArcObjects,几何对象模型的实质,——,它们是一种组合构成的形式,但这种组合并不一定按照严格的次序完成。
39、,(一),IGeometryCollection,接口,,该接口被多种结合对象实现的接口,它们包括,Polygons,、,Polylines,、,Multipoints,、,MultiPatches,、,TriangleStrips,、,TriangleFans,和,GeometryBags,等。,,它的方法可以让程序员添加、改变和移除一个几何对象的组成元素,即它们的子对象。这些元素包括:,对于,Polygon,而言,每个组成的,Geometry,,即子对象是,Ring,对象,,对于,Polyline,而言,其子对象是,Path,,,对于,MultiPoint,而言,其子对象是,Point,,
40、,对于,MultiPath,而言,其组成的,Geometry,是,TriangleFan,、,Triangl,-Strip,或,Ring,(,MultiPath,是,3,维几何对象),,对于,GeometryBag,对象而言,组成它的,Geometry,可以是任何类型的几何形体对象。,,Geometry,属性,:通过一个索引值来返回一个组成这个几何对象的某个子对象,,,GeometryCount,:返回这些子对象的数目,,,AddGeometry,和,AddGeometries,方法:向一个几何对象添加子对象,前者一次只能添加一个几何对象,后者是一次添加一个几何数组,,,AddGeometry
41、Collection,:,将一个多边形中所有的子对象的引用添加到某个多边形中,即可以合并两个多边形,(二),ISegmentCollection,接口,,它被,Path,、,Ring,、,Polyline,和,Polygon,四个类所实现,因此,它们都可以被称作是片段几何对象,使用这个接口可以处理片段几何对象中的每一个组成元素,——Segment,对象。,,,Segment,属性:需要输入一个子对象的索引值,,,EnumSegments,返回一个,SegmentCollection,对象中的片段对象,它作为一个枚举值返回,,AddSegment,方法,:用于向一个,SegmentCollect
42、ion,对象中添加单个的片段,,,AddSegments,:添加一个片段数组对象,,,InsertSegments,、,InsertSegmentCollection,、,RemoveSegments,、,ReplaceSegments,、,ReplaceSegmentCollection,、,SetSegmentCollection,和,SetSegments,都是用于改变和重新排列这个片段集合对象中的片段。,(三),IPointCollection,接口,,被多个几何对象类所实现,这些对象包括都可以由多个点构成,如,Multipoints,、,Paths,、,Rings,、,Polylin
43、es,、,Polygons,、,TriangleFans,、,TriangleFans,、,TriangleStripes,和,MutiPatches,等,它们都可以称为,PointCollection,对象。,,,PointCollection,对象可以,IPointCollection,接口定义的方法获取、添加、插入、查询、移除它中间的某个顶点。,六、显示要素,,在,IScreenDisplay,接口下的几种画的方法,,,(,1,),StartDrawing,:准备画,,(,2,),DrawPoint,DrawMultipoint,DrawPolyline,DrawPolygon,,,(,
44、3,),FinishDrawing,:刷新屏幕,,快速画几何体和符号,Dim,,pDisplay,,As,,IScreenDisplay,,Set,,pDisplay,=,pMxApplicaiton.Display,‘,当前应用程序的显示,,,pDisplay.StartDrawing,,pDisplay.hDC,,,esriNoScreenCache,,,pDisplay.SetSymbol,,pSym,,,pDisplay.DrawPolygon,,pPolygon,,pDisplay.FinishDrawing,七、几何形体空间的操作接口,,接口支持有,Geometry,的子类,,,I
45、TopologicalOperator,:,Intersect,、,Union,、,difference,、,buffer,,,IProximityOperator,,,IRelationalOperator,,,用于,…,,,执行临近空间操作,如,Buffer,,,Cut,和,Clip,,,检验空间关系(相交、相离、重叠等),,测量图形之间的距离,(一)拓扑关系,,图形对象的操作包括交(,Intersect,)、并(,union,)、差(,difference,)以及缓冲区(,buffer,)分析,这几个分析都可以在,ITopologicalOperator,接口中实现。,,注意:,ITop
46、ologicalOperator,接口的方法仅仅能使用在高级几何对象上,即,Point,、,MultiPoint,、,Polyline,和,Polygon,;,,如果要使用在低等级的几何对象上,如,Segment,、,Path,或,path,上,它们需要先组合成高级别几何对象才行。,,Boundary,:,可以返回一个几何对象的外部组成边界,,Boundary,的维度比原对象要低一维,如多边形的,Boundary,是多义线,多义线的,Boundary,则是它的顶点集合,而点集对象的,Boundary,则是不存在的,因为没有低于,0,维的集合对象。,,Buffer,:,可以给一个高级别几何对象产
47、生一个缓冲区,无论是点、多边形还是多义线,它们的缓冲区都是一个具有面积的几何对象。,,ITopologicalOperator,拓扑操作,,,提供了使用,geometry,工作的方法,,支持点、点集、线和多边形,Buffer,Intersect,Union,Cut,Clip,Dim,pTopoOp,As,ITopologicalOperator,,Dim,pBuffPoly,As,IPolygon,,Set,pTopoOp = pFeature.Shape,,Set,pBuffPoly = pTopoOp.Buffer (intBufferDistance),,Clip,方法:,可以将一个几何
48、对象使用一个封边界来进行裁切,裁切的结果为几何对象被封边界包围的部分。,,ConstructUnion,方法,:可以将一个几何对象的枚举与同经纬度的单个几何对象合并,这种方法在大量几何对象合并的时候是非常有效的,,,Union,方法,:可以合并两个同纬度的单个几何对象,合并后的两个单个几何对象将变成一个几何对象。,,ConvexHull,方法:,可以产生一个几何图形的最小的边框凸多边形。,,,Cut,方法,:可以使用一条多义线将一个几何形体切割为两个几何对象。,,,Difference,方法:,可以产生两个几何对象的差集,,,Intersection,:返回两个同维度几何形体对象的交集。,(二
49、)关系运算,,几何对象除了可以做各种拓扑运算外,它们之间还拥有关系属性,如包含、相等、在内部、相交、叠加等,可以通过,IRelationalOperator,的方法获得。,,,Contain,方法,:用于检查两个几何对象的包含,,,Cross,方法,:检测两个几何对象是否相交,两几何对象相交于较低维的几何对象而不是较高的,,,Equal,方法,:可以检测两个几何对象是否相等,IRelationalOperator,:,关联操作 空间分析的判断,提供检查空间关系的功能,,(return Boolean),,Equals:,几何对象在空间上是否相同,?,,Touches:,边界是否接触,?,,Co
50、ntains:,是否是包容关系,?,,其它操作,Dim,pRelationOp,As,IRelationalOperator,,Dim,booTouches,As,Boolean,,Set,pRelationOp = pPoly,,booTouches = pRelationOp.Touches (pAnotherPoly),(三),IProximityOperator,接口,,,IProximityOperator,接口定义的方法主要用于得到两个几何对象之间的距离或得到一个给定点到某个几何对象的最近点之间的距离。,,在很多,GIS,系统中都需要拥有“长度量算”的功能,而这个功能就可以使用该接
51、口定义的,Returndistance,方法。,,,IProximityOperator,接口被众多几何对象的类所实现,包括,Segment,、,Point,、,MultiPoint,、,Envelope,和,Polycurve,对象。,QueryNearestPoint,和,ReturnNearestPoint,方法都可以用于查询一个几何对象上的点对象。,,,ReturnDistance,方法则可以返回两个几何对象之间的最短距离,IProximityOperator,临近操作,,检验要素之间的临近关系的方法,,(,1,),ReturnDistance,:返回要素之间的最小距离(,double
52、,),,(,2,),ReturnNearestPoint,:,查找和返回最近点(,Point,),Dim,pProxOp,As,IProximityOperator,,Dim,dblDistance,As,Double,,Set,pProxOp = pLine,,dblDistance = pProxOp.ReturnDistance (pSomeOtherLine),?,Area and Length,每个要素都有一个类型的几何体,,Query Interface to Curve (Line features) or Polygon,Dim,pArea,As,IArea,,Set,pAre
53、a = pPoly,‘QI,,Msgbox pArea.Area,Dim,pCurve,As,ICurve,,Set,pCurve = pLine,‘QI,,Msgbox pCurve.Length,,空间参考,,,IGeometry,接口下的,SpatialReference,Property,,Geoprocessing,IBasicGeoprocessor,provides access to methods found in the,Geoprocessing,Wizard,,Use for an entire Feature class,,Most methods require an input table,,Clip,,Dissolve,,Intersect,,Merge,,Union,,,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化妆品美妆产品介绍自然之选清新护肤
- 心理健康情绪管理主题班会我的情绪小怪兽
- 慢性病宣传慢性肾脏病防治如何预防和管理慢性肾脏病
- 深入学习2025最高人民法院工作报告
- 孩子如何合理使用DeepSeek(AI仅辅助不可让渡创造力)
- 肝病健康知识宣讲甲型肝炎及戊型肝炎传播和预防
- 慢性肾脏病知识宣传慢性肾脏病的危害
- 315消费者权益日共筑满意消费
- 世界睡眠日健康睡眠知识科普睡眠是维持生命健康的重要源泉
- 深入学习2025政府工作报告要点双语版
- 初中语文作文素材:100个描写外貌佳句
- 初中语文古诗词鉴常考题型及答题技巧
- 初中语文作文素材:9个落笔即封神的议论文作文论据
- 初中资料:学好语文的方法及技巧
- 初中语文作文素材:经典格言总结