gis二次开发第4课

上传人:今*** 文档编号:105832564 上传时间:2019-10-13 格式:PPT 页数:79 大小:2.36MB
返回 下载 相关 举报
gis二次开发第4课_第1页
第1页 / 共79页
gis二次开发第4课_第2页
第2页 / 共79页
gis二次开发第4课_第3页
第3页 / 共79页
gis二次开发第4课_第4页
第4页 / 共79页
gis二次开发第4课_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《gis二次开发第4课》由会员分享,可在线阅读,更多相关《gis二次开发第4课(79页珍藏版)》请在金锄头文库上搜索。

1、GIS二次开发,主讲:张云鹏,第四课 几何对象GEOMETRY,几何对象概述 使用几何对象 空间参考 地理变换,几何对象概述,Geometry对象用于表达要素(Feature)或图形元素(Graphic Element)的几何形状。 ArcGIS的几何对象被分为两个层次 高级几何对象:用于定义要素的几何形状; 构件几何对象:用于构建高级几何对象。,高级几何对象包括以下类型: Point:具有X、Y坐标值,以及可选的属性,如高程(Z值),测量值(M)和ID号。 Multipoint:是无序点的群集,它用于表示具有相同属性设置的同一组点。 Polyline:是一个有序路径(Path)的集合,这些路

2、径既可以是连续的,也可以是离散的。 Polygon:是环(Ring)的集合,环是一种封闭的路径。Polygon可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。 MultiPatch :用于描述三维几何形体面。,几何构件: 路径(Path)、环( Ring)、线段( Segment)、三角形带( TriangleStrip)、三角形扇( TriangleFan)及三角形用于构建多段线(polyline)、多边形(polygon)和多面体(MultiPatch). Polylines contain paths, polygons contain rings and

3、 MultiPatches contain TriangleStrips, TriangleFans, triangles, and rings. Paths and rings are sequences of vertices connected by segments. A segment is a parametric function that defines the shape of the curve connecting its vertices. Segment types include CircularArc, Line, EllipticArc, and BezierC

4、urve. Envelope:Envelopes describe the spatial extent of other geometries,是一个矩形,它用于表示要素的空间范围。它覆盖了几何对象的最小坐标和最大坐标、Z值和M值的变化范围。 GeometryBags provide operations on collections of geometries.,一个几何对象的每个顶点,除了有XY坐标值外,还可以有其它可选属性,如Z值、M值和ID。 IZAware IMAware IPointIDAware IPoint pnt = new PointClass() as IPoint;

5、pnt.PutCoords(1, 1); IZAware zAware = pnt as IZAware; zAware.ZAware = true; pnt.Z = 11.1;,Multipoint, polyline, polygon和 MultiPatch几何对象在它们的几何形状上都有约束条件 如多边形的内部必须明确定义,且必须与之外部分开。 当几何对象上的所有约束条件都满足时,我们说这个几何对象是简单的几何对象;当有一个约束条件未满足或不知道这个约束条件是否满足时,我们说这个几何对象是非简单(non-simple)的几何对象。 ITopologicalOperator、IPolygon

6、2IPolygon4和IPolyline2IPolyline5接口中提供了检测和强化几何对象简单性的操作。,几何对象, 特别是线段类型,有一套丰富的方法用于定义它们的位置。 例如,IConstructCircularArc 接口中有不同的方法定义圆弧线段。典型情况下,名字中包含“construct”的接口或方法使用多个输入参数来完全定义目标几何对象。,高级几何对象支持经典的集合运算来产生新的几何对象,这些集合运算包括集合的并(union)、交( intersection)、差( difference)和对称差分(symmetric difference,也即异或运算)。这些操作定义在ITopo

7、logicalOperator接口中,且通常情况下这些运算一次操作两个几何对象,但其中的ConstructUnion 运算可作用于多于2个几何对象。 高级几何对象还支持IRelationalOperator 接口,其中定义了用于检测2个几何对象之间的空间关系方法,如检测2个几何对象是否相离(disjoint)、是否相接(touch)、是否包含(contain)等,这些方法返回布尔类型的值。,Polyline(多段线)对象,Polyline(多段线)对象是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连的路径和多个相连路径的集合。,路径(Path)是连续Segment对象的集合

8、,除了路径的第一个和最后一个Segment外,每一个Segment的起始点都是前一个Segment的终止点,即路径对象中的Segment不能出现分离的情况。路径可以是任意数目的Line、CircularArc、EllipticArc和BezierCurve的组合。一个或多个路径对象组成一个Polyline对象。,Polygon对象,Polygon(多边形)对象是一个有序环对象的集合,这些环可以是一个或者多个。多边形对象通常可以用于描述具有面积的多边形离散矢量对象。,MultiPatch,MultiPatches describe 3D geometries that can have mult

9、iple, textured surfaces. They can also store vertex normals(顶点法线), vertex ids, vertex measures and several part-level attributes. You can create MultiPatches by importing data from a variety of different file formats (3D Studio Max .3ds files, OpenFlight .flt files, Sketchup .skp files, VRML .wrl fi

10、les).,Triangle Strips (条、带) Triangle Fans(扇),Rings as used in MultiPatches,Point and MultiPoint,Point几何对象 IPoint pPoint = new PointClass(); pPoint.X = 100; pPoint.Y = 100; MultiPoint几何对象,构建Multipoint对象,/定义第一个点 IPoint pPoint1 = new PointClass(); pPoint1.X = 100; pPoint1.Y = 100; /定义第二个点 IPoint pPoint

11、2 = new PointClass(); pPoint2.X = 200; pPoint2.Y = 200; /构建其他点 IPointCollection pMultipoint = new MultipointClass(); object o=Type.Missing; /添加第一个点,不需要设置点的顺序,参数设置为Type.Missing pMultipoint.AddPoint(pPoint1, ref o, ref o); /添加第二个点,不需要设置点的顺序,参数设置为Type.Missing pMultipoint.AddPoint(pPoint2, ref o, ref o)

12、; /添加其他点,Segment几何对象,Path and Ring,Path几何对象 Path是连续的Segment的集合 除第一个Segment和最后一个Segment外其余Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离 Path可以是任意数的Line,CircularArc,EllipticArc和BezierCurve的组合 一个或多个Path组成一个Polyline对象,Path and Ring,Ring几何对象 Ring是一个封闭的Path即起始和终止点有相同的坐标值。它有内部和外部属性 一个或多个Ring对象组成一个Pol

13、ygon对象,Polyline and Polygon,Polyline几何对象 由一个或多个相连或者不相连的path对象的有序集合 可以是单个Path对象组成,也可以多个相连的Path对象组成,或者是多个分离的Path组成,Polyline and Polygon 使用IGeometryCollection接口创建一个Polyline对象,/定义第一个点 IPoint pPoint1 = new PointClass(); pPoint1.X = 100; pPoint1.Y = 100; /定义第二个点 IPoint pPoint2 = new PointClass(); pPoint2.

14、X = 200; pPoint2.Y = 200; /创建一个Line对象 ILine pLine= new LineClass(); /设置Line对象的起始终止点 pLine.PutCoords(pPoint1,pPoint2); /QI到ISegment ISegment pSegment= pLine as ISegment;,/创建一个Path对象 ISegmentCollection pPath= new PathClass(); object o=Type.Missing; /通过ISegmentCollection接口为Path对象添加Segment对象 pPath.AddSe

15、gment(pSegment,ref o,ref o); /创建一个Polyline对象 IGeometryCollection pPolyline = new PolylineClass(); /通过IGeometryCollection为Polyline对象添加Path对象 pPolyline.AddGeometry(pPath as IGeometry, ref o, ref o);,Polyline and Polygon,Polygon对象 由一个或多个Ring对象的有序集合,它可以由单个Ring 对象构成,也可以使用多个Ring组成。 Ring可以分为Outer Ring(外环)和

16、Inner Ring(内环)之分。外环和内环都是有方向的,它们的区别是外环的方向是顺时针的,内环的方向是逆时针。,Polyline and Polygon,/创建一个Ring对象,通过ISegmentCollection接口向其中添加Segment对象 ISegmentCollection pSegCollection = new RingClass(); object o = Type.Missing; pSegCollection.AddSegment(pSegment1, ref o, ref o); pSegCollection.AddSegment(pSegment2, ref o, ref o); /QI到IRing接口封闭Ring对象,使其有效 IRing pRing = pSegCollection as IRing; pRing.Close(); /使用Ring对象构建Polygon对象 IGeometryCollection pGeometryColl = new PolygonClass(); p

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号