ArcGIS几何形体理解.ppt
第八章使用几何体,课程预览 ArcMap几何对象的类型 操作:用代码创建新的几何体 画几何体,Geometry是AO中使用最为广泛的对象集之一,用户在新建、删除、编辑和进行地理分析的时候,就是在处理一个包含几何形体的矢量对象;除了显示要素外,在空间选择、要素着色制作专题图、标注编辑等很多过程中也需要Geometry参与。,在Geometry模型中,几何形体对象被分为两种层次,一是构成要素形状的几何图形,另一种是组成这些形状的组成部分。,ArcMap几何形体,线段:在曲线的起点和终点之间线段集合成 paths/ringsPaths/rings集合成lines/polygons可以在任何层次上编辑,两点所确定的弧段,Ring继承至path,几何形体对象模型图,Point,MultiPoint,Ring,Path,Segment,Geometry,Envelope,Curve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,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方法可以使用参数改变已经存在点的位置。如ConstrainAngle只要确定旋转角度和描点等参数,就可以精确移动。,2、IConstructPoint接口 AO中Geometry模型的一个重要特点是它具有一套丰富的,利用已经存在的几何对象的距离、角度和空间关系,生成新的几何形体对象的方法。使用这些方法常常涉及使用角度和偏转角。在AO编写程序时,角度使用的是弧度单位,而长度单位使用地图投影单位。IConstructPoint接口,可以使用多达10种方法来创建所需要的点,下面需要介绍几种点的构造方法:,(1)ConstructAlong沿线创建方法 沿线创建法是基于一个曲线(Curve)上起始点对象,通过给定距离、比例和扩展类型,沿着曲线类创建一个新点。如果距离比曲线的长度要长,那么点将沿着它的切线生成。,object.ConstructAlong(curve,extension,distance,asRatio),(2)ConstructAngleBisector角平分线创建法 这种方法使用三个点,即起始点(FromPoint)、通过点(Through Point)和终止点(ToPoint)。该方法通过平分三点形成的夹角,并设置一个距离在平分线寻找到一点。如果长度为负值,则沿着反方向放置点。,object.ConstructAngleBisector(from,through,to,distance,useAcuteAngle),(3)ConstructAngleIntersection构造角度交点 通过给定的两个点和两个角度,这个方法可以在两条射线的交点处产生一个点。两条射线由点和角度来确定。,object.ConstructAngleIntersection(p1,angle1,p2,angle2),(4)ConstructAngleDistance构造角度距离点 通过一个给定点和一个相对点的绝对角度和距离,构造器可以惟一确定一个新点。,object.ConstructAngleDistance(p,inAngle,distance),(5)ConstructDeflection构造偏角度点 给定一个基准线段,一个偏转角度和一个距离,该方法将沿着偏转角度和射线方向可以一定距离设置一个新点。,object.ConstructDeflection(baseLine,distance,inAngle),(6)ConstructDeflectionIntersection构造偏转角交点 这种方法使用一条线段作为基准线,从该基准线的起始点和终点分别测量偏转角度,引出两条射线,两条射线相交点为新点。这个方法的OnRightSide参数可以确定点在基线的方位。,object.ConstructDeflectionIntersection(baseLine,startAngle,endAngle,OnRightSide),(7)ConstructOffset构造偏移点 给定一条路径,沿着曲线的距离或者比例,然后进行一段水平偏移,如果Offset值为正,则该点向右偏移;如果Offset值为负,则向左水平偏移。,object.ConstructOffset(curve,extension,distance,asRatio,Offset),(8)ConstructParallel构造平行线上的点 构造平行线上点方法是给定一条直线路径Path,一个参考点Point及一段距离或比率,该构造器将在平行线上构造出一个新点。,object.ConstructParallel(Segment,extension,start,distance),二、MultiPoint对象 MultiPoint点集对象是无序点的群集,它用于表示具有相同属性设置的同一组点。如一家公司不同的营业场所可以使用点集来表示。,MultiPoint对象可以使用Add方法来添加一个点到它的集合中去,这个过程需要使用IPointCollection接口来完成。,Dim pPointCollection As IPointCollectionSet pPointCollection=New MultipointpPointCollection.AddPoint pPoint,如同Point对象一样,MultiPoint对象也有众多的构造方法,这些构造方法都在IConstructMultipoint接口中定义,它们能够基于一个已经存在的几何对象来产生一个点集。,1.ConstructArcPoints构造圆弧点 这个构造器通过给定的一段圆弧,返回出该圆弧的终止点、起始点、圆心和切线的交点等四个点对象。,object.ConstructArcPoints(a),A:ICircularArc,2.ConstructDivideLength构造等长度点 这个方法通过给定的一条曲线对象和已经定义的长度,返回所有处于这条曲线上的点对象,这些点包含在一个点集对象中。,object.ConstructDivideLength(inCurve,separationDistance),3.ConstructDivideEqual构造等分点 这个构造器根据输入的一条曲线和需要返回的点的数目来产生一个点集对象。,object.ConstructDivideEqual(inCurve,numInnerPoints),4.ConstructTangent构造切线点 这个方法用于产生一个点在圆上面的两个切点。,object.ConstructTangent(inCurve,p),点与点群 点是没有尺寸的,只有一对X、Y坐标值 点群是点的集合,Point,Multipoint with six points,Dim pPoint As IPointSet pPoint=New PointpPoint.X=300pPoint.Y=450Dim pMultiPts As IPointCollectionSet pMultiPts=New MultiPointpMultiPts.AddPoint pPoint,三、几何对象的组成部分曲线Curve 除去点、点集和封边界对象外,几乎其他所有的几何形体都可以看做是曲线(Curve),Curve是具有一维视图或者二维边界形状的几何对象,如Line、Polyline、Polygon、CircularArc、BezierCurve、EllipticArc和CircularArc等都是曲线的一种。这些对象都实现了ICurve接口。,ArcMap几何形体,线段:在曲线的起点和终点之间线段集合成 paths/ringsPaths/rings集合成lines/polygons可以在任何层次上编辑,两点所确定的弧段,Ring继承至path,ICurve接口 ICurve接口提供了操作任何一种一维形状或二维边界形状的属性和方法,但是它并不能用于产生一个新的曲线对象。Length属性:返回一个曲线对象的长度 FromPoint和ToPoint:获得和设置一个曲线的起始点和终止点ReverseOrientation方法:改变一个曲线的节点次序,即改变一个曲线对象的起始点和终止点顺序,IsClosed属性:说明一个曲线的起始点和终止点是否在同一个位置(除了Polygon)QueryPoint方法:依据特定的长度或比例来获得一个曲线对象上的某一点的位置,Dim pCurve As ICurveDim pOutPoint As IPointSet pOutPoint=New PointpCurve.QueryPoint esriSegmentExtension.esriNoExtension,2,False,pOutPoint,如果查询长度超过了曲线本身的长度,就需要设置片段扩展。,GetSubcurve方法:复制一个曲线对象的某个特定部分 QueryTangent和QueryNormal方法:得到基于曲线对象上某一点的曲线的切线和法线。,(一)片段对象 片段(Segment)是由一个起始点、一个终止点以及定义两点之间的曲线的函数组成的一维几何形体对象,它是一条单一的曲线对象 片段对象是一个抽象类,它可能是线性的,如线段(Line);也可能是非线性的,如圆弧(CircularArc)、椭圆弧(EllipticArc)和贝塞尔曲线(BezierCurve)等都是一种片段对象。,ArcMap几何形体,线段:在曲线的起点和终点之间线段集合成 paths/ringsPaths/rings集合成lines/polygons可以在任何层次上编辑,两点所确定的弧段,Ring继承至path,1、CircularArc对象 该对象是一个圆弧,它是圆的一部分,如果使用CircularArc来表示一个整圆,则它的CentralAngle为2,且其起始点和终止点的位置是一个点。在几何对象中,CircularArc是EllipticArc的特殊情况。其主要属性如图:,IConstructCircularArc接口的一些构造器:(1)ConstructCircle构造器 是产生一个圆对象的最简单的方法,通过传入CenterPoint(圆心)和Radius(半径)两个属性,可以确定一个惟一的圆对象。,object.ConstructCircle(CenterPoint,Radius,isCCW),(2)ConstructArcDistance 通过传入一个起始点、中点和圆弧长度来产生一个新的圆弧对象,当然这个长度不能超过整个2*radius。,object.ConstructArcDistance(Center,from,isCCW,arcDistance),(3)ConstructChordDistance 基于一个起始点、圆弧的弦长度、圆弧的方向和中心点来产生一个新的圆弧对象。,object.ConstructChordDistance(Center,from,isCCW,chordDistance),(4)ConstructEndPointsChordHeight 是使用一个起始点、一个终止点和一个弦的中点高度,按照顺时针或逆时针的方向产生一个圆弧对象。,object.ConstructEndPointsChordHeight(from,to,isCCW,ChordHeight),(5)ConstructFilletPoint 可以产生两条线段或圆弧的内切线,这个方法要求传入两个Segment对象以及内切弧在两个Segment上的点。,object.ConstructFilletPoint(s1,s2,from,hintPoint),(6)ConstructTangentAndPoint 可以相切于一个片段对象某点的圆弧。,object.ConstructTangentAndPoint(s,atFrom,p),(7)ConstructThreePoints 通过三个给定的点对象来产生一个惟一的圆弧,这三个点分别是起始点、终止点和圆弧上的任一点,这个点处于起始点和终止点中间的某一位置。,object.ConstructThreePoints(from,middle,to,useExistingCenter),2、Line对象 Line对象是最简单的片段,它是由起始点和终止点决定的一条直线,它是一维几何对象 Line是最简单和最常使用的片段对象,通常用于构造Polyline、Polygon、Ring和Path对象等。ILine是Line对象主要支持的接口,它定义了一系列用于构造和设置线段对象的属性和方法。,QueryCoords属性:返回通过一个直线上的起始点和终止点的坐标值;PutCoords:设置线段两点的坐标 Angle属性:返回线段对象与X轴的夹角。,此外,IConstructLine接口还提供了更两个更复杂的方法来产生一个线段。ConstructAngleBisector方法:通过传入三个点对象,构造一个夹角,然后通过这个夹角的顶点产生一个角平分线以及一个线段的长度。,object.ConstructAngleBisector(from,through,to,Length,useAcuteAngle),ConstructExtended:可以用于扩展一个已经存在的线段对象来产生一个新的线段。,object.ConstructExtended(inLine,extendHow),3、EllipticArc对象 EllipticArc(椭圆弧)是一个椭圆的一部分,椭圆是通过一个长轴、一个短轴、中心点和旋转角度值来确定的几何对象,它是椭圆弧的特例,如果旋转角度为0,则椭圆对象的两个轴分别与X、Y轴重合。EllipticArc对象则还使用诸如FromAngle、ToAngle两个参数来确定。,4、BezierCurve对象 贝塞尔曲线是由四个控制点定义的,由一组三次多项式描述的参数曲线,用于描述等高线或河流等平滑变化的线对象。,控制点0和控制点1构成的线段和控制点2和控制点3构成的线段相切。这四个控制点产生了一条平滑的曲线。,由起点、终点和方程定义三个方面组成子类:Line,BezierCurve,CircularArc线段用来创建其它的几个对象 Paths,polylines,rings,and polygons Dim pSegment As ILine Set pSegment=New Line pSegment.FromPoint=pPointA pSegment.ToPoint=pPointB,Segments,From,To,(二)路径(Path)对象 路径是连续片段对象的集合,除了路径的第一个和最后一个组成片段外,每一个片段的起始点都是前一个片段的终止点,即路径对象中的片段不能出现分离的情况。路径可以是任意数目的Line、CircularArc、EllipticArc和BezierCurve的组合。一个或多个路径对象组成一个Polyline。,IPath是Path对象的主要接口,它定义了设置一个路径对象的多个方法。Generalizes方法:可以抽象化一个平滑的路径对象,即可以将一个平滑的曲线变成抽象为几条相连的线段 Smooth方法:将一个非平滑的路径对象平滑化 SmoothLocal方法:可以只将某个连接点处平滑化,而非后者一样平滑整条路径对象。,(三)环(Ring)对象 环是一种封闭的路径对象,它的起始点和终止点坐标值是一样的,这种对象具有“内部”和“外部”属性。环是产生Polygon(多边形)的元素。组成环的片段对象是有序的,环对象也实现了IPath接口。环必须是封闭的路径,因此它具有以下几个关键特征:,它包含一系列首尾相连的同方向的片段对象 它是封闭的,即起始点与终止点是同一点 它不能只相交,IRing接口为Ring所实现,它定义了多个处理环对象的方法:IRing的Close方法可以添加一条线段到一个开放的环对象上,以连接这个环的起始点和终止点。,一个环的片段至少应该有3个(三角形环是最简单的环对象),而这个方法可以在只有两个片段被设置的情况下自动产生第三个片段以封闭环对象。,在Geometry,封闭的几何形体有三种,即Envelope、Ring和Polygon,因此它们拥有一个别的几何对象没有的特征,即面积,因此都实现了IArea接口来获取与面积有关的信息。Area:返回一个具有封闭特性几何形体对象的面积CentralPoid:返回这些几何形体的重心。LabelPoint:返回这些几何形体的标注点。,(四)PolyCurve对象 PolyCurve是一个抽象类,它代表了一个Polyline或Polygon对象的边框线,它是由多个曲线构成的对象,Polyline的每一个组成部分都是一个有效的路径对象;Polygon的每个组成部分则是环对象。IPolycurve接口提供了处理这两种对象的一般方法:,几何形体对象模型图,Point,MultiPoint,Ring,Path,Segment,Geometry,Envelope,Curve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,Geometrycollection,*,SplitAtDistance和SplitAtPoint:通过指定一个距离或点的方式添加一个新的顶点到Polycurve上。Generalize:用于给一个Polycurve对象进行抽象化整形。,Polyline多义线是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连的路径和多个相连路径的集合。这个对象可以用于表示具有线状特征的对象,如河流、公路和等高线等。用户可以使用单路径构成的多义线(Polyline)来表示简单线,如简单公路;使用具有多个路径的多义线来表示复杂线类型,如具有单个支流的河流等。,1、Polyline多义线,一个有效的Polyline对象需要满足以下的准则:组成Polyline的Path对象都是有效的 Path不会重合、相交或自相交 多个Path对象可以连接于某一个节点,也可以是分离的 长度为0的Path对象是不被允许的。,IPolyline是Polyline类的主要接口,它定义了两个主要方法。其中Reshape方法可以使用一个路径对象给一个存在的Polyline整形,Polyline可以使用IGeometryCollection接口添加路径对象来产生,当使用这个接口的时候,需要注意以下的情况:每一个路径对象都必须是有效的,或者这个路径对象在使用IPath:Simplify方法后有效 由于Polyline是路径对象的有序集合,因此在添加路径时,必须注意顺序和方向 为了保证Polyline是有效的,可以在产生这个形状后使用Simplify方法,产生构造线段的点Dim pPoint1 As IPointDim pPoint2 As IPointSet pPoint1=New PointpPoint1.PutCoords 100,20Set pPoint2=New PointpPoint2.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 pPath,2、Polygon对象 Polygon多边形是环(Ring)的集合,环是一种封闭的路径。Polygon可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。对于一个给定的点而言,它总是在多边形“内部”、“外部”或者“边界上”。它通常用于描述具有面状特性的要素。,一个有效的多边形符合下面的标注:每一个构成的环都是有效的环之间的边界不能重合外部环是有方向的,它是顺时针方向内部环在一个多边形中定义了一个洞,它是逆时针方向的面积为0的环是不允许的 多边形存在一个片段对象或路径对象是无效的,Paths and polygons,Polylines由一组闭合或不闭合的Paths组成Polygons由一个或多个rings组成,Path with four segments,Polygon with seven rings,几何形体对象模型图,Point,MultiPoint,Ring,Path,Segment,Geometry,Envelope,Curve,Polyline,Line,BezierCurve,CircularArc,Polycurve,*,*,*,Polygon,*,Geometrycollection,*,四、封装边界(Envelopes)定义一个要素的空间范围(最小包围边界)所有几何体都有封装边界 获得或设置用IGeometry:Envelope属性,封装边界(包络线)对象是一个矩形区域,它是作为任何一个几何形体的最小边框区域而存在的,每一个Geometry对象都有一个封装边界对象,即使是封装边界本身。,Dim pEnvelope As IEnvelopeSet pEnvelope=pLine.Envelope,Xmin,YmaxXmax,Ymin,几何体的所有点的坐标最大、最小值构成的空间范围,应用案例(Zooming In to a Feature)使用a shape的Envelope属性获得范围 用一个封装边界的ActiveView范围属性设置,Feature,Geometry,Envelope,封装边界是一个几何体,继承至几何体,而封装边界是几何体的一个组成部分,一个要素包括属性和图形信息,问题:封装边界是否有自己的封装边界?回答:有。,五、集合接口 除了Point对象外,其他的几何形体对象都是可以通过集合的方式构成的。如点集对象是点的集合,路径是片段对象的集合,多义线是路径的集合。在AO中的这些Geometry类型的集合接口主要有IGeometryCollection、ISegmentCollection和IPointCollection三个,这些接口揭示出ArcObjects几何对象模型的实质它们是一种组合构成的形式,但这种组合并不一定按照严格的次序完成。,(一)IGeometryCollection接口 该接口被多种结合对象实现的接口,它们包括Polygons、Polylines、Multipoints、MultiPatches、TriangleStrips、TriangleFans和GeometryBags等。它的方法可以让程序员添加、改变和移除一个几何对象的组成元素,即它们的子对象。这些元素包括:,对于Polygon而言,每个组成的Geometry,即子对象是Ring对象 对于Polyline而言,其子对象是Path 对于MultiPoint而言,其子对象是Point 对于MultiPath而言,其组成的Geometry是TriangleFan、Triangl-Strip或Ring(MultiPath是3维几何对象)对于GeometryBag对象而言,组成它的Geometry可以是任何类型的几何形体对象。,Geometry属性:通过一个索引值来返回一个组成这个几何对象的某个子对象 GeometryCount:返回这些子对象的数目 AddGeometry和AddGeometries方法:向一个几何对象添加子对象,前者一次只能添加一个几何对象,后者是一次添加一个几何数组 AddGeometryCollection:将一个多边形中所有的子对象的引用添加到某个多边形中,即可以合并两个多边形,(二)ISegmentCollection接口 它被Path、Ring、Polyline和Polygon四个类所实现,因此,它们都可以被称作是片段几何对象,使用这个接口可以处理片段几何对象中的每一个组成元素Segment对象。Segment属性:需要输入一个子对象的索引值 EnumSegments返回一个SegmentCollection对象中的片段对象,它作为一个枚举值返回,AddSegment方法:用于向一个SegmentCollection对象中添加单个的片段 AddSegments:添加一个片段数组对象 InsertSegments、InsertSegmentCollection、RemoveSegments、ReplaceSegments、ReplaceSegmentCollection、SetSegmentCollection和SetSegments都是用于改变和重新排列这个片段集合对象中的片段。,(三)IPointCollection接口 被多个几何对象类所实现,这些对象包括都可以由多个点构成,如Multipoints、Paths、Rings、Polylines、Polygons、TriangleFans、TriangleFans、TriangleStripes和MutiPatches等,它们都可以称为PointCollection对象。PointCollection对象可以IPointCollection接口定义的方法获取、添加、插入、查询、移除它中间的某个顶点。,六、显示要素 在IScreenDisplay接口下的几种画的方法(1)StartDrawing:准备画(2)DrawPoint,DrawMultipoint,DrawPolyline,DrawPolygon(3)FinishDrawing:刷新屏幕 快速画几何体和符号,Dim pDisplay As IScreenDisplaySet pDisplay=pMxApplicaiton.Display当前应用程序的显示pDisplay.StartDrawing pDisplay.hDC,esriNoScreenCache pDisplay.SetSymbol pSym pDisplay.DrawPolygon pPolygonpDisplay.FinishDrawing,七、几何形体空间的操作接口接口支持有Geometry的子类 ITopologicalOperator:Intersect、Union、difference、buffer IProximityOperator IRelationalOperator 用于 执行临近空间操作,如Buffer,Cut和Clip 检验空间关系(相交、相离、重叠等)测量图形之间的距离,(一)拓扑关系 图形对象的操作包括交(Intersect)、并(union)、差(difference)以及缓冲区(buffer)分析,这几个分析都可以在ITopologicalOperator接口中实现。注意:ITopologicalOperator接口的方法仅仅能使用在高级几何对象上,即Point、MultiPoint、Polyline和Polygon;如果要使用在低等级的几何对象上,如Segment、Path或path上,它们需要先组合成高级别几何对象才行。,Boundary:可以返回一个几何对象的外部组成边界,Boundary的维度比原对象要低一维,如多边形的Boundary是多义线,多义线的Boundary则是它的顶点集合,而点集对象的Boundary则是不存在的,因为没有低于0维的集合对象。Buffer:可以给一个高级别几何对象产生一个缓冲区,无论是点、多边形还是多义线,它们的缓冲区都是一个具有面积的几何对象。,ITopologicalOperator拓扑操作提供了使用geometry工作的方法 支持点、点集、线和多边形,Buffer,Intersect,Union,Cut,Clip,Dim pTopoOp As ITopologicalOperatorDim pBuffPoly As IPolygonSet pTopoOp=pFeature.ShapeSet pBuffPoly=pTopoOp.Buffer(intBufferDistance),Clip方法:可以将一个几何对象使用一个封边界来进行裁切,裁切的结果为几何对象被封边界包围的部分。ConstructUnion方法:可以将一个几何对象的枚举与同经纬度的单个几何对象合并,这种方法在大量几何对象合并的时候是非常有效的 Union方法:可以合并两个同纬度的单个几何对象,合并后的两个单个几何对象将变成一个几何对象。,ConvexHull方法:可以产生一个几何图形的最小的边框凸多边形。Cut方法:可以使用一条多义线将一个几何形体切割为两个几何对象。Difference方法:可以产生两个几何对象的差集 Intersection:返回两个同维度几何形体对象的交集。,(二)关系运算 几何对象除了可以做各种拓扑运算外,它们之间还拥有关系属性,如包含、相等、在内部、相交、叠加等,可以通过IRelationalOperator的方法获得。Contain方法:用于检查两个几何对象的包含 Cross方法:检测两个几何对象是否相交,两几何对象相交于较低维的几何对象而不是较高的 Equal方法:可以检测两个几何对象是否相等,IRelationalOperator:关联操作 空间分析的判断,提供检查空间关系的功能(return Boolean)Equals:几何对象在空间上是否相同?Touches:边界是否接触?Contains:是否是包容关系?其它操作,Dim pRelationOp As IRelationalOperatorDim booTouches As BooleanSet pRelationOp=pPolybooTouches=pRelationOp.Touches(pAnotherPoly),(三)IProximityOperator接口 IProximityOperator接口定义的方法主要用于得到两个几何对象之间的距离或得到一个给定点到某个几何对象的最近点之间的距离。在很多GIS系统中都需要拥有“长度量算”的功能,而这个功能就可以使用该接口定义的Returndistance方法。IProximityOperator接口被众多几何对象的类所实现,包括Segment、Point、MultiPoint、Envelope和Polycurve对象。,QueryNearestPoint和ReturnNearestPoint方法都可以用于查询一个几何对象上的点对象。ReturnDistance方法则可以返回两个几何对象之间的最短距离,IProximityOperator临近操作 检验要素之间的临近关系的方法(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(Line features)or Polygon,Dim pArea As IAreaSet pArea=pPoly QIMsgbox pArea.Area,Dim pCurve As ICurveSet pCurve=pLine QIMsgbox pCurve.Length,空间参考 IGeometry接口下的SpatialReference Property,Geoprocessing,IBasicGeoprocessor provides access to methods found in the Geoprocessing WizardUse for an entire Feature classMost methods require an input tableClipDissolveIntersectMergeUnion,