GIS二次开发-几何对象与空间参考

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

国土信息工程系第5章几何对象与空间参考1.几何对象概述2.使用几何对象3.空间参考4.几何对象与桥接模式国土信息工程系5.1几何对象概述Geometry对象用于表达要素或元素的几何形状。ArcGIS的几何对象被分为两个层次一是构成要素形状的几何图形,称为“高级几何对象”另一种是组成这些高级几何对象的构件国土信息工程系GEOMETRY模型图国土信息工程系国土信息工程系国土信息工程系高级几何对象包括以下类型:Point:具有X、Y坐标值,以及可选的属性,如高程(Z值),测量值(M)和ID号。Multipoint:是无序点的群集,它用于表示具有相同属性设置的同一组点。Polyline:是一个有序路径(Path)的集合,这些路径既可以是连续的,也可以是离散的。Polygon:是环(Ring)的集合,环是一种封闭的路径。Polygon可以由一个或者多个环组成,甚至环内套环,形成岛环的情况,但是内外环之间不能重叠。Envelope:是一个矩形,它用于表示要素的空间范围。它覆盖了几何对象的最小坐标和最大坐标、Z值和M值的变化范围。国土信息工程系几何构件:Paths,RingsandSegments用于构建polylines和polygons.Polylinescontainpathsandpolygonscontainrings.PathsandRingsaresequencesofverticesconnectedbysegments.Polyline(多义线)对象是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连的路径和多个相连路径的集合。国土信息工程系路径是连续Segment对象的集合,除了路径的第一个和最后一个Segment外,每一个Segment的起始点都是前一个片断的终止点,即路径对象中的Segment不能出现分离的情况。路径可以是任意数目的Line、CircularArc、EllipticArc和BezierCurve的组合。一个或多个路径对象组成一个Polyline对象。国土信息工程系GeometryCurvePathsPolyCurveBezierCurveCircularArcEllipticArcLinePolylineIscomposedofPathsArecomposedofSegmentsSegmentscanbeof4differentTypesSegments图Polyline及相关对象结构图PointsareusedtobuildSegmentsorPolylinePoints国土信息工程系Polygon对象Polygon(多边形)对象是一个有序环对象的集合,这些环可以是一个或者多个。多边形对象通常可以用于描述具有面积的多边形离散矢量对象。国土信息工程系一个几何对象的每个顶点,除了有XY坐标值外,还可以有其它可选属性,如Z值、M值和ID。IZAwareIMAwareIPointIDAware国土信息工程系画单个点IPointpnt=newPointClass()asIPoint;pnt.PutCoords(100,100);IZAwarezAware=pntasIZAware;zAware.ZAware=true;pnt.Z=11.1;axMapControl1.DrawShape(pnt);国土信息工程系5.1.1Point与Multipoint对象国土信息工程系5.1.2Point对象可参看组件对象模型图国土信息工程系国土信息工程系沿线构造法国土信息工程系角平分线构造法国土信息工程系构造角度交点国土信息工程系构造角度距离点国土信息工程系构造角度偏转交点国土信息工程系5.1.3Multipoint对象国土信息工程系国土信息工程系画两个单独的点objectMissing=Type.Missing;IPointpP1,pP2;pP1=newPointClass();pP2=newPointClass();pP1.PutCoords(100,100);pP2.PutCoords(150,150);IPointCollectionlp;lp=newMultipointClass();lp.AddPoint(pP1,refMissing,refMissing);lp.AddPoint(pP2,refMissing,refMissing);axMapControl1.DrawShape(lpasIGeometry);国土信息工程系构造圆弧点国土信息工程系构造等长度点国土信息工程系构造交点国土信息工程系产生一个点的曲线两个切点国土信息工程系5.1.4包络线Envelope国土信息工程系几何图形的包络线国土信息工程系国土信息工程系交集国土信息工程系并集国土信息工程系IEnvelope运算objectMissing=Type.Missing;IEnvelopepenv,penv2,penv3;penv=(IEnvelope)g1.Envelope;penv2=(IEnvelope)g2.Envelope;MessageBox.Show(penv2.XMax.ToString());penv2.Intersect(penv);MessageBox.Show(penv2.XMax.ToString());国土信息工程系5.1.5曲线(Curve)国土信息工程系5.1.5Segment国土信息工程系5.1.5.1CircularArc国土信息工程系国土信息工程系国土信息工程系国土信息工程系5.1.5.2Line对象国土信息工程系构造线段pLine1.FromPoint=pPoint1;pLine1.ToPoint=pPoint2;pLine2.FromPoint=pPoint2;pLine2.ToPoint=pPoint3;ISegmentCollectionpPath;pPath=newPathClass();pPath.AddSegment(pLinel);pPath.AddSegment(pLine2);国土信息工程系5.1.5.3EllipticArc对象国土信息工程系国土信息工程系5.1.5.4BezierCurve对象国土信息工程系国土信息工程系产生BezierCurve曲线DimpBezierAsIBezierCurvepBezier=NewBezierCurveClass()DimpPointAsIPointpPoint=NewPointClass()pPoint.PutCoords(20,30)pBezier.PutCoord(2,pPoint)国土信息工程系5.1.6􄏃路径(Path)对象􄏃􄏃国土信息工程系产生PathpLine1.FromPoint=pPoint1;pLine1.ToPoint=pPoint2;pLine2.FromPoint=pPoint2;pLine2.ToPoint=pPoint3;ISegmentCollectionpPath;pPath=newPathClass();pPath.AddSegment(pLinel);pPath.AddSegment(pLine2);国土信息工程系国土信息工程系5.1.7环(Ring)对象国土信息工程系环的几个重要属性国土信息工程系产生环(Ring)对象ISegmentCollectionpSegments;ILinepLine;IRingpRing;//产生一个段然后加入段集合pSegments=newRingClass();pLine=newLineClass();pLine.PutCoords(pPoint1,pPoint2);objectMissing=Type.Missing;objectval=1;pSegments.AddSegment(pLineasISegment,refMissing,refval);pLine=newLineClass();pLine.PutCoords(pPoint2,pPoint3);pSegments.AddSegment(pLineasISegment,refMissing,refval);pRing=pSegmentsasIRing;pRing.Close();//环封闭国土信息工程系5.1.8PolyCurve对象国土信息工程系5.1.9Polyline对象国土信息工程系//’产生构造线段的点IPointpPoint1;IPointpPoint2;pPoint1=newPointClass();pPoint1.PutCoords(100,20);pPoint2=newPointClass();pPoint2.PutCoords(20,310);IGeometryCollectionpPolyline;pPolyline=newPolylineClass();ISegmentCollectionpPath;pPath=newPathClass();//产生线段对象将其添加到段ILinepLine;objectMissing1=Type.Missing;objectMissing2=Type.Missing;pLine=newLineClass();pLine.PutCoords(pPoint1,pPoint2);pPath.AddSegment(pLineasISegment,refMissing,refMissing2);‘将路径对象添加到多义线对象pPolyline.AddGeometry(pPathasIGeometry,refMissing,refMissing2);国土信息工程系5.1.10Polygon对象国土信息工程系国土信息工程系国土信息工程系使用段来构造多边形//产生一个环,向其添加段对象ISegmentCollectionpSegCol;pSegCol=newRingClass();objectMissing1=Type.Missing;objectMissing2=Type.Missing;pSegCol.AddSegment(pSegmentA,refMissing1,refMissing2);pSegCol.AddSegment(pSegmentB,refMissing1,refMissing2//封闭环对象,使其有效IRingpRing;pRing=pSegColasIRing;;pRing.Close();//使用用环来构造多边形IGeometryCollectionpPolygon;pPolygon=newPolygonClass();pPolygon.AddGeometry(pRing,refMissing1,refMissing2);国土信息工程系5.1.11MultipatchMultipatchMultipatch用于描述3D面状几何类型,由一系列的矢量三角形构成,如果其中的part是一个ring,那么它必须是封闭的,第一个节点和最后一个节点相同,另外每个part所包含节点的顺序非常重要,InnerRings在OuterRings之后,代表单个表面patch的一系列rings必须由第一个ring开始。国土信息工程系国土信息工程系国土信息工程系5.1.11.1Trianglestrip国土信息工程系5.1.11.2TrangleFan国土信息工程系5.1.11.3Triangle国土信息工程系5.12Geomtry集合国土信息工程系5.12.1IGeomtryCollection国土信息工程系5.12.2ISegmentCollection国土信息工程系5.12.2IPointCollection国土信息工程系5.1.13几何对象小结国土信息工程系5.2使用几何对象国土信息工程系5.2.1Workingwiththegeometryenvi

1 / 123
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功