您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 优-ArcEngine基础开发教程C#二次开发ArcGis
世界有我精彩-【侯志伟】整理ArcGISEngine基础开发教程(1)——创建第一个ArcGISEngine桌面应用程序1创建第一个ArcGISEngine桌面应用程序ArcGISEngine9.3提供了丰富的GIS组件方便用户快速的定制开发一个GIS应用程序,无需写代码即可实现GIS数据加载,地图操作等功能甚至可以实现高级编辑以及空间分析功能。接下来使用ArcGISEngine9.3提供了MapControlApplication模块来创建第一个ArcGISEngine桌面应用程序,并为桌面应用应用程序提供编辑功能。1.1目标1.创建第一个ArcGISEngine桌面应用程序2.为应用程序添加编辑功能。1.2准备工作1.IDE:VisualStudio2005/20082.ArcGISEngineDeveloperkit9.33.制作ArcGIS实验数据地图文档MXD1.3设计流程图1.4制作地图文档在ArcMap中加载数据后,点击保存生成一个*.mxd地图文档,如图1所示:1.5创建第一个ArcGISEngine桌面应用程序在VisualStudio2008中新创建项à选择àArcGISàEngineàMapControlApplication,点击确定,如图2所示:本文由fxlcoco编写ESRIBBSGIS大讲堂首发世界有我精彩-【侯志伟】整理本文由fxlcoco编写ESRIBBSGIS大讲堂首发可以看到在VisualStudio中看到在新创建的项目中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGISEngine控件以及一个.NETToolStripMenuItem菜单控件,如图3所示:1.6加载MXD地图文档数据单击F5键运行程序,然后单击打开MXD地图文档按钮打开MXD地图文档,如图4所示:世界有我精彩-【侯志伟】整理本文由fxlcoco编写ESRIBBSGIS大讲堂首发可以看到应用程序把MXD地图文档加载到MapControl地图上,可以使用ToolbarControl提供的常用GIS功能如:放大,缩小,信息查询等功能。如图5所示:1.7为应用程序添加编辑功能在应用程序设计模式下右键单击ToolbarControl,单击属性选项弹出ToolbarControl属性对话框,单击Items选项卡,单击Add…按钮弹出ControlsCommands对话框,单击Toolset选项卡,选择FeatureEditors选项,拖动到属性对话框工具栏的指定位置。如图6所示世界有我精彩-【侯志伟】整理1.8体验使用编辑功能运行应用程序,可见工具条多了一个和ArcMap中功能类似的编辑工具集,开始对面图层进行编辑创建一个新的面图元,如图7所示。综上GIS应用开发人员通过使用ArcGISEngine可以快速创建自定义GIS应用程序。ArcGISEngine基础开发教程(2)——学习几何对象与空间参考2.1目标1.熟悉ArcGISEngineGeometry模型,通过程序构建常用几何对象2.熟悉空间参考3.通过野外测量点构建一个polygonshapefile功能开发2.2准备工作1.IDE:VisualStudio2005/20082.ArcGISEngineDeveloperkit9.33.自造一份包含X,Y坐标的*.txt文本文档数据(即野外测量点)2.3Geometry主要几何对象模型图本文由fxlcoco编写ESRIBBSGIS大讲堂首发世界有我精彩-【侯志伟】整理本文由fxlcoco编写ESRIBBSGIS大讲堂首发Geometry是ArcGISEngine中使用昀为广泛的对象集之一,用户在创建、删除、编辑和进行地理分析的时候,就是处理一个包含几何形体的矢量对象;除了显示要素意外,控件对象选择,要素符号化,标注要素,编辑要素都需要Geometry参与。图1是Geometry的主要几何对象模型图,接下来将一一介绍这些几何对象。2.4几何对象2.4.1Point和MultiPoint几何对象2.4.1.1Point几何对象Point:是一个0维的几何图形,具有X,Y坐标值,以及一些可选的属性:如高程值(Z值),度量值(M值)和ID号,点对象用于描述精确定位的对象,例如一个电话亭在一个城市的精确位置以下代码演示如何创建一个Point对象:IPointpPoint=newPointClass();pPoint.X=100;pPoint.Y=100;2.4.1.2MultiPoint几何对象MultiPoint:点集对象是一系列无序的点的群集,这些点具有相同的属性信息。例如可以用一个点集来表示整个城市天然气调压站。如下图所示:一个Multipoint对象由6个Point对象组成。以下代码片段演示如何构建Multipoint对象://定义第一个点IPointpPoint1=newPointClass();pPoint1.X=100;pPoint1.Y=100;//定义第二个点IPointpPoint2=newPointClass();pPoint2.X=200;pPoint2.Y=200;……//构建其他点IPointCollectionpMultipoint=newMultipointClass();objecto=Type.Missing;世界有我精彩-【侯志伟】整理//添加第一个点,不需要设置点的顺序,参数设置为Type.MissingpMultipoint.AddPoint(pPoint1,refo,refo);//添加第二个点,不需要设置点的顺序,参数设置为Type.MissingpMultipoint.AddPoint(pPoint2,refo,refo);……//添加其他点2.4.2Segment几何对象2.4.3Path和Ring几何对象2.4.3.1Path几何对象Path是连续的Segment的集合,除了路径的第一个Segment和昀后一个Segment外其余的Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离,Path可以是任意数的Line,CircularArc,EllipticArc和BezierCurve的组合。本文由fxlcoco编写ESRIBBSGIS大讲堂首发世界有我精彩-【侯志伟】整理本文由fxlcoco编写ESRIBBSGIS大讲堂首发一个或多个Path组成一个Polyline对象。2.4.3.2Ring几何对象Ring是一个封闭的Path即起始和终止点有相同的坐标值。它有内部和外部属性。一个或多个Ring对象组成一个Polygon对象。2.4.4Polyline和Polygon几何对象2.4.4.1Polyline几何对象Polyline对象是由一个或多个相连或者不相连的path对象的有序集合,它可以是单个Path对象组成,也可以是多个相连的Path对象组成,或者是多个分离的Path组成,如下图所示。Polyline通常用来代表线状地物如道路,河流,管线等等。一个Polyline对象必须满足以下准则:1.组成Polyline对象的所有Path对象必须是有效的。2.组成Polyline对象的所有Path对象不能重合,相交或自相交。3.组成Polyline对象的多个Path对象可以连接与某一点,也可以分离。4.Path对象的长度不能为0.IPolyline是Polyline类的主要接口,IPolyline的Reshape方法可以使用一个Path对象为一个Polyline对象整形,IPolyline的SimplifyNetwork方法用于简化网络。Polyline对象可以使用IGeometryCollection接口添加Path对象的方法来创建,使用该接口需注意以下情况:1.每一个Path对象必须是有效的,或使用IPath::Simplify方法后有效。2.由于Polyline是Path对象的有序集合,所以添加Path对象时必须注意顺序和方向。3.为了保证Polyline是有效的,可以创建完Polyline对象后使用ITopologicalOperator接口的Simplify方法。以下代码片段为使用IGeometryCollection接口创建一个Polyline对象:世界有我精彩-【侯志伟】整理//定义第一个点IPointpPoint1=newPointClass();pPoint1.X=100;pPoint1.Y=100;//定义第二个点IPointpPoint2=newPointClass();pPoint2.X=200;pPoint2.Y=200;//创建一个Line对象ILinepLine=newLineClass();//设置Line对象的起始终止点pLine.PutCoords(pPoint1,pPoint2);//QI到ISegmentISegmentpSegment=pLineasISegment;//创建一个Path对象SegmentCollectionpPath=newPathClass();objecto=Type.Missing;//通过ISegmentCollection接口为Path对象添加Segment对象pPath.AddSegment(pSegment,refo,refo);//创建一个Polyline对象IGeometryCollectionpPolyline=newPolylineClass();//通过IGeometryCollection为Polyline对象添加Path对象pPolyline.AddGeometry(pPathasIGeometry,refo,refo);2.4.4.2Polylgon几何对象2Polylgon对象是由一个或多个Ring对象的有序集合,它可以是由单个Ring对象构成,也可以使用多个Ring组成如下图所示。其中Ring可以分为OuterRing(外环)和InnerRing(内环)之分。外环和内环都是有方向的,它们的区别是外环的方向是顺时针的,内环的方向是逆时针。Polygon通常用来代表有面积的多边形矢量对象,如行政区,建筑物等。以下代码片段演示如何构建一个Polygon:本文由fxlcoco编写ESRIBBSGIS大讲堂首发世界有我精彩-【侯志伟】整理//创建一个Ring对象,通过ISegmentCollection接口向其中添加Segment对象ISegmentCollectionpSegCollection=newRingClass();objecto=Type.Missing;pSegCollection.AddSegment(pSegment1,refo,refo);pSegCollection.AddSegment(pSegment2,refo,refo);//QI到IRing接口封闭Ring对象,使其有效IRingpRing=pSegCollectionasIRing;pRing.Close();//使用Ring对象构建Polygon对象IGeometryCollectionpGeometryColl=newPolygonClass();pGeometryColl.AddGeometry(pRing,refo,refo);2.4.5Envelope几何对象Envelope是所有几何对象的外接矩形,用于表示几何对象的昀小边框,所有的几何对象都有一个Envelope对象,IEnvelope是Envelope对象的主要接口,通过它可以获取几何对象的XMax,XMin,YMax,YMin,Height,Width属性。通过IEnvelope的Expand方法还可以按比例缩放Envelope对象的范围,如下图所示:2.4.6Curve对象几何对象除去Point,MultiPoint和Envelope外,其他所有的几何体都可以看做是Curve(曲线)。Line,Polyline
本文标题:优-ArcEngine基础开发教程C#二次开发ArcGis
链接地址:https://www.777doc.com/doc-5055162 .html