1、第八章使用几何体课程预览课程预览u ArcMap几何对象的类型u 操作:用代码创建新的几何体u 画几何体 Geometry是AO中使用最为广泛的对象集之一,用户在新建、删除、编辑和进行地理分析的时候,就是在处理一个包含几何形体的矢量对象;除了显示要素外,在空间选择、要素着色制作专题图、标注编辑等很多过程中也需要Geometry参与。在Geometry模型中,几何形体对象被分为两种层次,一是构成要素形状的几何图形几何图形,另一种是组成这些形状的组成部分组成部分。ArcMap几何形体几何形体u线段:在曲线的起点和终点之间线段:在曲线的起点和终点之间u线段集合成线段集合成 paths/ringsuP
2、aths/rings集合成集合成lines/polygonsu可以在任何层次上编辑可以在任何层次上编辑SegmentsBezier curveLineCircular arc3 Rings(closed paths)2 Paths1 Poly1 LinePointsMultipointsPolygonsPolylines两点所确定的弧段Ring继承至path几何形体对象模型图几何形体对象模型图PointMultiPointRingPathSegmentGeometryEnvelopeCurvePolylineLineBezierCurveCircularArcPolycurve*Polygon
3、*Geometrycollection*一、Point对象 Point对象对象是一个0维的几何图形,具有X、Y坐标值,以及可选的属性,如高程(Z值),测量值(M)和ID号,可以用于描述只需要精确定位的对象,如一个城市在全国的位置如一个城市在全国的位置等。相关类说明相关类说明1、IPoint接口接口 定义了Point对象的属性和方法:ID属性:属性:返回点对象的ID号;M、Z值:值:返回点的测量号和高程值 X和和Y:获得一个点的X和Y的坐标值 PutCoords:用于设置一个点的X、Y坐标值 ConstrainAngle和ConstrainDistance方法可以使用参数改变已经存在点的位置。如
4、ConstrainAngle只要确定旋转角度和描点等参数,就可以精确移动。2、IConstructPoint接口接口 AO中Geometry模型的一个重要特点是它具有一套丰富的,利用已经存在的几何对象的距离、角度和空间关系,生成新的几何形体对象的方法。使用这些方法常常涉及使用角度和偏转角。在AO编写程序时,角度使用的是弧度单位弧度单位,而长度单位使用地图投影单位地图投影单位。IConstructPoint接口,可以使用多达10种方法来创建所需要的点,下面需要介绍几种点的构造方法:(1)ConstructAlong沿线创建方法沿线创建方法 沿线创建法沿线创建法是基于一个曲线(Curve)上起始点
5、对象,通过给定距离、比例和扩展类型,沿着曲线类创建一个新点。如果距离比曲线的长度要长,那么点将沿着它的切线生成。object.ConstructAlong(curve,extension,distance,asRatio)(2)ConstructAngleBisector角平分线创建法角平分线创建法 这种方法使用三个点,即起始点(FromPoint)、通过点(Through Point)和终止点(ToPoint)。该方法通过平分三点形成的夹角,并设置一个距离一个距离在平分线寻找到一点。如果长度为负值,则沿着反方向放置点。object.ConstructAngleBisector(from,th
6、rough,to,distance,useAcuteAngle)(3)ConstructAngleIntersection构造角度构造角度交点交点 通过给定的两个点和两个角度,这个方法可以在两条射线的交点处产生一个点。两条射线由点和角度来确定。object.ConstructAngleIntersection(p1,angle1,p2,angle2)(4)ConstructAngleDistance构造角度距离点构造角度距离点 通过一个给定点和一个相对点的绝对角度和距离,构造器可以惟一确定一个新点。object.ConstructAngleDistance(p,inAngle,distance
7、)(5)ConstructDeflection构造偏角度点构造偏角度点 给定一个基准线段,一个偏转角度和一个距离,该方法将沿着偏转角度和射线方向可以一定距离设置一个新点。object.ConstructDeflection(baseLine,distance,inAngle)(6)ConstructDeflectionIntersection构造偏转构造偏转角交点角交点 这种方法使用一条线段作为基准线,从该基准线的起始点和终点分别测量偏转角度,引出两条射线,两条射线相交点为新点。这个方法的OnRightSide参数可以确定点在基线的方位。object.ConstructDeflectionIn
8、tersection(baseLine,startAngle,endAngle,OnRightSide)(7)ConstructOffset构造偏移点构造偏移点 给定一条路径,沿着曲线的距离或者比例,然后进行一段水平偏移,如果Offset值为正,则该点向右偏移;如果Offset值为负,则向左水平偏移。object.ConstructOffset(curve,extension,distance,asRatio,Offset)(8)ConstructParallel构造平行线上的点构造平行线上的点 构造平行线上点方法是给定一条直线路径Path,一个参考点Point及一段距离或比率,该构造器将在平
9、行线上构造出一个新点。object.ConstructParallel(Segment,extension,start,distance)二、二、MultiPoint对象对象 MultiPoint点集对象点集对象是无序点的群集,它用于表示具有相同属性设置的同一组点。如如一家公司不同的营业场所可以使用点集来表一家公司不同的营业场所可以使用点集来表示示。MultiPoint对象可以使用Add方法来添加一个点到它的集合中去,这个过程需要使用IPointCollection接口来完成。Dim pPointCollection As IPointCollectionSet pPointCollectio
10、n=New MultipointpPointCollection.AddPoint pPoint 如同Point对象一样,MultiPoint对象也有众多的构造方法,这些构造方法都在IConstructMultipoint接口中定义,它们能够基于一个已经存在的几何对象来产生一个点集。1.ConstructArcPoints构造圆弧点构造圆弧点 这个构造器通过给定的一段圆弧,返回出该圆弧的终止点、起始点、圆心和切线的交点等四个点对象。object.ConstructArcPoints(a)A:ICircularArc 2.ConstructDivideLength构造等长度点构造等长度点 这个方
11、法通过给定的一条曲线对象和已经定义的长度,返回所有处于这条曲线上的点对象,这些点包含在一个点集对象中。object.ConstructDivideLength(inCurve,separationDistance)3.ConstructDivideEqual构造等分点构造等分点 这个构造器根据输入的一条曲线和需要返回的点的数目来产生一个点集对象。object.ConstructDivideEqual(inCurve,numInnerPoints)4.ConstructTangent构造切线点构造切线点 这个方法用于产生一个点在圆上面的两个切点。object.ConstructTangent(i
12、nCurve,p)点与点群点与点群u 点是没有尺寸的,只有一对X、Y坐标值u 点群是点的集合PointMultipoint with six pointsDim pPoint As IPointSet pPoint=New PointpPoint.X=300pPoint.Y=450Dim pMultiPts As IPointCollectionSet pMultiPts=New MultiPointpMultiPts.AddPoint pPoint三、几何对象的组成部分三、几何对象的组成部分曲线曲线Curve 除去点、点集和封边界对象外,几乎其他所有的几何形体都可以看做是曲线(Curve),
13、Curve是具有一维视图或者二维边界形状的几何对象,如Line、Polyline、Polygon、CircularArc、BezierCurve、EllipticArc和CircularArc等都是曲线的一种。这些对象都实现了ICurve接口。ArcMap几何形体几何形体u线段:在曲线的起点和终点之间线段:在曲线的起点和终点之间u线段集合成线段集合成 paths/ringsuPaths/rings集合成集合成lines/polygonsu可以在任何层次上编辑可以在任何层次上编辑SegmentsBezier curveLineCircular arc3 Rings(closed paths)2
14、Paths1 Poly1 LinePointsMultipointsPolygonsPolylines两点所确定的弧段Ring继承至pathICurve接口接口 ICurve接口提供了操作任何一种一维形状或二维边界形状的属性和方法,但是它并不能用于产生一个新的曲线对象。uLength属性:属性:返回一个曲线对象的长度u FromPoint和和ToPoint:获得和设置一个曲线的起始点和终止点uReverseOrientation方法方法:改变一个曲线的节点次序,即改变一个曲线对象的起始点和终止点顺序u IsClosed属性属性:说明一个曲线的起始点和终止点是否在同一个位置(除了Polygon)
15、u QueryPoint方法:依据特定的长度或比例来获得一个曲线对象上的某一点的位置Dim pCurve As ICurveDim pOutPoint As IPointSet pOutPoint=New PointpCurve.QueryPoint esriSegmentExtension.esriNoExtension,2,False,pOutPoint 如果查询长度超过了曲线本身的长度,就需要设置片段扩展。u GetSubcurve方法:方法:复制一个曲线对象的某个特定部分u QueryTangent和和QueryNormal方法方法:得到基于曲线对象上某一点的曲线的切线和法线。(一)片
16、段对象(一)片段对象 片段(片段(Segment)是由一个起始点、一个终止点以及定义两点之间的曲线的函数组成的一维几何形体对象,它是一条单一的曲线对象 片段对象是一个抽象类,u它可能是线性的线性的,如线段(Line);u也可能是非线性的非线性的,如圆弧(CircularArc)、椭圆弧(EllipticArc)和贝塞尔曲线(BezierCurve)等都是一种片段对象。ArcMap几何形体几何形体u线段:在曲线的起点和终点之间线段:在曲线的起点和终点之间u线段集合成线段集合成 paths/ringsuPaths/rings集合成集合成lines/polygonsu可以在任何层次上编辑可以在任何层
17、次上编辑SegmentsBezier curveLineCircular arc3 Rings(closed paths)2 Paths1 Poly1 LinePointsMultipointsPolygonsPolylines两点所确定的弧段Ring继承至path1、CircularArc对象对象 该对象是一个圆弧,它是圆的一部分,如果使用CircularArc来表示一个整圆,则它的CentralAngle为2,且其起始点和终止点的位置是一个点。在几何对象中,CircularArc是EllipticArc的特殊情况。其主要属性主要属性如图:IConstructCircularArc接口的一些
18、构造器:(1)ConstructCircle构造器构造器 是产生一个圆对象的最简单的方法,通过传入CenterPoint(圆心)和Radius(半径)两个属性,可以确定一个惟一的圆对象。object.ConstructCircle(CenterPoint,Radius,isCCW)(2)ConstructArcDistance 通过传入一个起始点、中点和圆弧长度来产生一个新的圆弧对象,当然这个长度不能超过整个2*radius。object.ConstructArcDistance(Center,from,isCCW,arcDistance)(3)ConstructChordDistance 基
19、于一个起始点、圆弧的弦长度、圆弧的方向和中心点来产生一个新的圆弧对象。object.ConstructChordDistance(Center,from,isCCW,chordDistance)(4)ConstructEndPointsChordHeight 是使用一个起始点、一个终止点和一个弦的中点高度,按照顺时针或逆时针的方向产生一个圆弧对象。object.ConstructEndPointsChordHeight(from,to,isCCW,ChordHeight)(5)ConstructFilletPoint 可以产生两条线段或圆弧的内切线,这个方法要求传入两个Segment对象以及内
20、切弧在两个Segment上的点。object.ConstructFilletPoint(s1,s2,from,hintPoint)(6)ConstructTangentAndPoint 可以相切于一个片段对象某点的圆弧。object.ConstructTangentAndPoint(s,atFrom,p)(7)ConstructThreePoints 通过三个给定的点对象来产生一个惟一的圆弧,这三个点分别是起始点、终止点和圆弧上的任一点,这个点处于起始点和终止点中间的某一位置。object.ConstructThreePoints(from,middle,to,useExistingCente
21、r)2、Line对象对象 Line对象对象是最简单的片段,它是由起始点和终止点决定的一条直线,它是一维几何对象 Line是最简单和最常使用的片段对象,通常用于构造Polyline、Polygon、Ring和Path对象等。ILine是Line对象主要支持的接口,它定义了一系列用于构造和设置线段对象的属性和方法。u QueryCoords属性属性:返回通过一个直线上的起始点和终止点的坐标值;uPutCoords:设置线段两点的坐标u Angle属性属性:返回线段对象与X轴的夹角。此外,IConstructLine接口还提供了更两个更复杂的方法来产生一个线段。u ConstructAngleBis
22、ector方法:方法:通过传入三个点对象,构造一个夹角,然后通过这个夹角的顶点产生一个角平分线以及一个线段的长度。object.ConstructAngleBisector(from,through,to,Length,useAcuteAngle)uConstructExtended:可以用于扩展一个已经存在的线段对象来产生一个新的线段。object.ConstructExtended(inLine,extendHow)3、EllipticArc对象对象 EllipticArc(椭圆弧)(椭圆弧)是一个椭圆的一部分,椭圆是通过一个长轴、一个短轴、中心点和旋转角度值来确定的几何对象,它是椭圆弧的
23、特例,如果旋转角度为0,则椭圆对象的两个轴分别与X、Y轴重合。EllipticArc对象则还使用诸如FromAngle、ToAngle两个参数来确定。4、BezierCurve对象对象 贝塞尔曲线是由四个控制点定义的,由一组三次多项式描述的参数曲线,用于描述等高线或河流等平滑变化的线对象。控制点0和控制点1构成的线段和控制点2和控制点3构成的线段相切。这四个控制点产生了一条平滑的曲线。由起点、终点和方程定义三个方面组成 子类:Line,BezierCurve,CircularArc 线段用来创建其它的几个对象 Paths,polylines,rings,and polygons Dim pSe
24、gment As ILine Set pSegment=New Line pSegment.FromPoint=pPointA pSegment.ToPoint=pPointBSegmentsFromToFromTo(二)路径(二)路径(Path)对象)对象 路径路径是连续片段对象的集合,除了路径的第一个和最后一个组成片段外,每一个片段的起始点都是前一个片段的终止点,即路径对象路径对象中的片段不能出现分离的情况中的片段不能出现分离的情况。路径可以是任意数目的Line、CircularArc、EllipticArc和BezierCurve的组合。一个或多个路径对象组成一个Polyline。IPa
25、th是Path对象的主要接口,它定义了设置一个路径对象的多个方法。uGeneralizes方法:方法:可以抽象化一个平滑的路径对象,即可以将一个平滑的曲线变成抽象为几条相连的线段u Smooth方法方法:将一个非平滑的路径对象平滑化u SmoothLocal方法方法:可以只将某个连接点处平滑化,而非后者一样平滑整条路径对象。(三)环(三)环(Ring)对象)对象 环环是一种封闭的路径对象,它的起始点和终止点坐标值是一样的,这种对象具有“内部”和“外部”属性。环是产生产生Polygon(多边(多边形)形)的元素。组成环的片段对象是有序的,环对象也实现了IPath接口接口。环必须是封闭的路径,因此
26、它具有以下几个关键特征:u 它包含一系列首尾相连的同方向的片段对象u 它是封闭的,即起始点与终止点是同一点u 它不能只相交 IRing接口接口为Ring所实现,它定义了多个处理环对象的方法:IRing的Close方法方法可以添加一条线段到一个开放的环对象上,以连接这个环的起始点和终止点。一个环的片段至少应该有3个(三角形环是最简单的环对象),而这个方法可以在只有两个片段被设置的情况下自动产生第三个片段以封闭环对象。在Geometry,封闭的几何形体有三种,即Envelope、Ring和Polygon,因此它们拥有一个别的几何对象没有的特征,即面积,因此都实现了IArea接口接口来获取与面积有关
27、的信息。uArea:返回一个具有封闭特性几何形体对象的面积uCentralPoid:返回这些几何形体的重心。uLabelPoint:返回这些几何形体的标注点。(四)(四)PolyCurve对象对象 PolyCurve是一个抽象类,它代表了一个Polyline或Polygon对象的边框线,它是由多个曲线构成的对象,Polyline的每一个组成部分都是一个有效的路径对象;Polygon的每个组成部分则是环对象。IPolycurve接口接口提供了处理这两种对象的一般方法:几何形体对象模型图几何形体对象模型图PointMultiPointRingPathSegmentGeometryEnvelopeC
28、urvePolylineLineBezierCurveCircularArcPolycurve*Polygon*Geometrycollection*u SplitAtDistance和和SplitAtPoint:通过指定一个距离或点的方式添加一个新的顶点到Polycurve上。u Generalize:用于给一个Polycurve对象进行抽象化整形。Polyline多义线多义线是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连的路径和多个相连路径的集合。这个对象可以用于表示具有线状特征的对象,如河流、公路和等高线等。u 用户可以使用单路径构成的多义线单路径构成的多义线(Po
29、lyline)来表示简单线,如简单公路;u使用具有多个路径的多义线多个路径的多义线来表示复杂线类型,如具有单个支流的河流等。1、Polyline多义线多义线 一个有效的Polyline对象需要满足以下的准则:u 组成Polyline的Path对象都是有效的u Path不会重合、相交或自相交u 多个Path对象可以连接于某一个节点,也可以是分离的u 长度为0的Path对象是不被允许的。IPolyline是Polyline类的主要接口,它定义了两个主要方法。其中Reshape方法方法可以使用一个路径对象给一个存在的Polyline整形 Polyline可以使用IGeometryCollection
30、接口添加路径对象来产生,当使用这个接口的时候,需要注意以下的情况注意以下的情况:u 每一个路径对象都必须是有效的,或者这个路径对象在使用IPath:Simplify方法后有效u 由于Polyline是路径对象的有序集合,因此在添加路径时,必须注意顺序和方向u 为了保证Polyline是有效的,可以在产生这个形状后使用Simplify方法产生构造线段的点产生构造线段的点Dim pPoint1 As IPointDim pPoint2 As IPointSet pPoint1=New PointpPoint1.PutCoords 100,20Set pPoint2=New PointpPoint2
31、.PutCoords 20,310Dim pPolyline As IGeometryCollectionSet pPolyline=New PolylineDim pPath As ISegmentCollectionSet pPath=New Path产生线段对象,将其添加到路径对象产生线段对象,将其添加到路径对象Dim pLine As ILineSet pLine=New LinepLine.PutCoords pPoint1,pPoint2pPath.AddSegment pLine将路径对象添加到多义线对象将路径对象添加到多义线对象pPolyline.AddGeometry pPa
32、th2、Polygon对象 Polygon多边形多边形是环(Ring)的集合,环是一种封闭的路径。Polygon可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。对于一个给定的点而言,它总是在多边形“内部”、“外部”或者“边界上”。它通常用于描述具有面状特性的要素。一个有效的多边形符合下面的标注符合下面的标注:u 每一个构成的环都是有效的u环之间的边界不能重合u外部环是有方向的,它是顺时针方向u内部环在一个多边形中定义了一个洞,它是逆时针方向的u面积为0的环是不允许的u 多边形存在一个片段对象或路径对象是无效的Paths and polygons Polyline
33、s 由一组闭合或不闭合的Paths组成 Polygons 由一个或多个rings组成Path with four segmentsPolygon with seven rings几何形体对象模型图几何形体对象模型图PointMultiPointRingPathSegmentGeometryEnvelopeCurvePolylineLineBezierCurveCircularArcPolycurve*Polygon*Geometrycollection*四、封装边界(四、封装边界(Envelopes)u 定义一个要素的空间范围(最小包围边界)u 所有几何体都有封装边界u 获得或设置用IGeom
34、etry:Envelope属性 封装边界(包络线)对象封装边界(包络线)对象是一个矩形区域,它是作为任何一个几何形体的最小边框区域而存在的,每一个Geometry对象都有一个封装边界对象,即使是封装边界本身。Dim pEnvelope As IEnvelopeSet pEnvelope=pLine.EnvelopeXmin,YmaxXmax,Ymin几何体的所有点的坐标最大、最小值构成的空间范围应用案例(应用案例(Zooming In to a Feature)u 使用a shape的Envelope属性获得范围u 用一个封装边界的ActiveView范围属性设置FeatureGeometry
35、EnvelopepMxDoc.ActiveView.Extent=pFeature.Shape.EnvelopepMxDoc.ActiveView.Refresh封装边界是一个几何体,继承至几何体,而封装边界是几何体的一个组成部分一个要素包括属性和图形信息问题:问题:封装边界是否有自己的封装边界?回答:回答:有。五、集合接口五、集合接口 除了Point对象外,其他的几何形体对象都是可以通过集合的方式构成集合的方式构成的。如点集对象是点的集合,路径是片段对象的集合,多义线是路径的集合。在AO中的这些Geometry类型的集合接口主要有IGeometryCollection、ISegmentCol
36、lection和IPointCollection三个,这些接口揭示出ArcObjects几何对象模型的实质它们是一种组合构成的形式,但这种组合并不一定按照严格的次序完成。(一)(一)IGeometryCollection接口接口 该接口被多种结合对象实现的接口,它们包括Polygons、Polylines、Multipoints、MultiPatches、TriangleStrips、TriangleFans和GeometryBags等。它的方法可以让程序员添加、改变和移除一个几何对象的组成元素,即它们的子对象。这些元素包括:u 对于Polygon而言,每个组成的Geometry,即子对象是R
37、ing对象u 对于Polyline而言,其子对象是Pathu 对于MultiPoint而言,其子对象是Pointu 对于MultiPath而言,其组成的Geometry是TriangleFan、Triangl-Strip或Ring(MultiPath是3维几何对象)u 对于GeometryBag对象而言,组成它的Geometry可以是任何类型的几何形体对象。u Geometry属性属性:通过一个索引值来返回一个组成这个几何对象的某个子对象u GeometryCount:返回这些子对象的数目u AddGeometry和AddGeometries方法:向一个几何对象添加子对象,前者一次只能添加一个
38、几何对象,后者是一次添加一个几何数组u AddGeometryCollection:将一个多边形中所有的子对象的引用添加到某个多边形中,即可以合并两个多边形(二)(二)ISegmentCollection接口接口 它被Path、Ring、Polyline和Polygon四个类所实现,因此,它们都可以被称作是片段几何对象,使用这个接口可以处理片段几何对象中的每一个组成元素Segment对象。u Segment属性:需要输入一个子对象的索引值u EnumSegments返回一个SegmentCollection对象中的片段对象,它作为一个枚举值返回u AddSegment方法方法:用于向一个Seg
39、mentCollection对象中添加单个的片段u AddSegments:添加一个片段数组对象u InsertSegments、InsertSegmentCollection、RemoveSegments、ReplaceSegments、ReplaceSegmentCollection、SetSegmentCollection和SetSegments都是用于改变和重新排列这个片段集合对象中的片段。(三)(三)IPointCollection接口接口 被多个几何对象类所实现,这些对象包括都可以由多个点构成,如Multipoints、Paths、Rings、Polylines、Polygons、
40、TriangleFans、TriangleFans、TriangleStripes和MutiPatches等,它们都可以称为PointCollection对象。PointCollection对象可以IPointCollection接口定义的方法获取、添加、插入、查询、移除它中间的某个顶点。六、显示要素六、显示要素u 在IScreenDisplay接口下的几种画的方法(1)StartDrawing:准备画(2)DrawPoint,DrawMultipoint,DrawPolyline,DrawPolygon(3)FinishDrawing:刷新屏幕u 快速画几何体和符号Dim pDisplay
41、As IScreenDisplaySet pDisplay=pMxApplicaiton.Display当前应用程序的显示pDisplay.StartDrawing pDisplay.hDC,esriNoScreenCache pDisplay.SetSymbol pSym pDisplay.DrawPolygon pPolygonpDisplay.FinishDrawing七、几何形体空间的操作接口七、几何形体空间的操作接口u接口支持有Geometry的子类 ITopologicalOperator:Intersect、Union、difference、buffer IProximityOp
42、erator IRelationalOperatoru 用于 执行临近空间操作,如Buffer,Cut和Clip 检验空间关系(相交、相离、重叠等)测量图形之间的距离(一)拓扑关系(一)拓扑关系 图形对象的操作包括交(Intersect)、并(union)、差(difference)以及缓冲区(buffer)分析,这几个分析都可以在ITopologicalOperator接口中实现。注意:ITopologicalOperator接口的方法仅仅能使用在高级几何对象上,即Point、MultiPoint、Polyline和Polygon;如果要使用在低等级的几何对象上,如Segment、Path或
43、path上,它们需要先组合成高级别几何对象才行。u Boundary:可以返回一个几何对象的外部组成边界,Boundary的维度比原对象要低一维,如多边形的Boundary是多义线,多义线的Boundary则是它的顶点集合,而点集对象的Boundary则是不存在的,因为没有低于0维的集合对象。uBuffer:可以给一个高级别几何对象产生一个缓冲区,无论是点、多边形还是多义线,它们的缓冲区都是一个具有面积的几何对象。ITopologicalOperator拓扑操作拓扑操作u提供了使用geometry工作的方法u 支持点、点集、线和多边形BufferIntersectUnionCutClipDim
44、 pTopoOp As ITopologicalOperatorDim pBuffPoly As IPolygonSet pTopoOp=pFeature.ShapeSet pBuffPoly=pTopoOp.Buffer(intBufferDistance)u Clip方法:可以将一个几何对象使用一个封边界来进行裁切,裁切的结果为几何对象被封边界包围的部分。uConstructUnion方法方法:可以将一个几何对象的枚举与同经纬度的单个几何对象合并,这种方法在大量几何对象合并的时候是非常有效的u Union方法方法:可以合并两个同纬度的单个几何对象,合并后的两个单个几何对象将变成一个几何对象
45、。u ConvexHull方法:方法:可以产生一个几何图形的最小的边框凸多边形。u Cut方法方法:可以使用一条多义线将一个几何形体切割为两个几何对象。u Difference方法:方法:可以产生两个几何对象的差集u Intersection:返回两个同维度几何形体对象的交集。(二)关系运算(二)关系运算 几何对象除了可以做各种拓扑运算外,它们之间还拥有关系属性,如包含、相等、在内部、相交、叠加等,可以通过IRelationalOperator的方法获得。u Contain方法方法:用于检查两个几何对象的包含u Cross方法方法:检测两个几何对象是否相交,两几何对象相交于较低维的几何对象而不
46、是较高的u Equal方法方法:可以检测两个几何对象是否相等IRelationalOperator:关联操作 空间分析的判断 提供检查空间关系的功能(return Boolean)Equals:几何对象在空间上是否相同?Touches:边界是否接触?Contains:是否是包容关系?其它操作Dim pRelationOp As IRelationalOperatorDim booTouches As BooleanSet pRelationOp=pPolybooTouches=pRelationOp.Touches(pAnotherPoly)(三)(三)IProximityOperator接口
47、接口 IProximityOperator接口定义的方法主要用于得到两个几何对象之间的距离或得到一个给定点到某个几何对象的最近点之间的距离。在很多GIS系统中都需要拥有“长度量算”的功能,而这个功能就可以使用该接口定义的Returndistance方法。IProximityOperator接口被众多几何对象的类所实现,包括Segment、Point、MultiPoint、Envelope和Polycurve对象。uQueryNearestPoint和ReturnNearestPoint方法都可以用于查询一个几何对象上的点对象。u ReturnDistance方法则可以返回两个几何对象之间的最短
48、距离IProximityOperator临近操作临近操作u 检验要素之间的临近关系的方法(1)ReturnDistance:返回要素之间的最小距离(double)(2)ReturnNearestPoint:查找和返回最近点(Point)Dim pProxOp As IProximityOperatorDim dblDistance As DoubleSet pProxOp=pLinedblDistance=pProxOp.ReturnDistance(pSomeOtherLine)?Area and Length 每个要素都有一个类型的几何体 Query Interface to Curve(
49、Line features)or PolygonDim pArea As IAreaSet pArea=pPoly QIMsgbox pArea.AreaDim pCurve As ICurveSet pCurve=pLine QIMsgbox pCurve.LengthPolygonIPolygon:IPolycurveExteriorRingCount:LongQueryExteriorRings(ExteriorRings:IRing)CloseFindExteriorRing(interiorRing:IRing):IRingQueryInteriorRings(exteriorRin
50、gs:IRing,interiorRings:IRing)IPolygonIAreaInteriorRingCount(exteriorRing:IRong):LongSimplifyPreserveFromToCurveICurve:IGeometryFromPoint:IPointICurveIsClosed:BooleanLength:DoubleToPont:IPoint空间参考空间参考u IGeometry接口下的SpatialReference Property Geoprocessing IBasicGeoprocessor provides access to methods