ArcGIS Engine地理信息系统开发教程 第6章 空间数据编辑..pptx
- 文档编号:30812347
- 上传时间:2024-01-30
- 格式:PPTX
- 页数:50
- 大小:787.68KB
ArcGIS Engine地理信息系统开发教程 第6章 空间数据编辑..pptx
《ArcGIS Engine地理信息系统开发教程 第6章 空间数据编辑..pptx》由会员分享,可在线阅读,更多相关《ArcGIS Engine地理信息系统开发教程 第6章 空间数据编辑..pptx(50页珍藏版)》请在冰豆网上搜索。
第6章空间数据编辑,目录,1,目录,1,简介,2,3,开始编辑,编辑对象,8,属性编辑,9,结束编辑,保存编辑,4,设置编辑图层,7,节点编辑,5,6,10,设置编辑任务,编辑操作,空间数据编辑,是指产生新的矢量数据或对已有的矢量空间数据进行的再加工,包括矢量数据的生产、加工、维护、错误修正等是空间数据维护与加工的基本环节是基于ArcGISEngine开发的GIS系统的基本功能包括矢量图形编辑和属性数据的编辑两部分(5)针对工作空间下的数据进行操作如:
ShapefileWorkspaces工作空间、AccessWorkspace工作空间、FileGDBWorkspace工作空间等,1.简介,2,实例分析,实现思路,1.简介,3,以编辑FileGDBWorkspace为例介绍空间数据的编辑
(1)打开一个编辑对象,并设定相关参数
(2)设置一个目标图层,设定编辑任务实现所要执行的编辑操作(5)结束编辑任务并保存(6)停止编辑,实例分析,代码说明ArcGISEngine实现空间数据编辑的方法有两种:
1)直接调用ArcGISEngine封装的工具2)根据操作过程逐步编写代码本章实例的程序架构为一个解决方案下有两个项目:
GISEditor(作为启动项目)-用来设计程序的主界面,实现各编辑功能的按钮(按钮功能的具体实现函数在GISEditor.EditTool项目中)GISEditor.EditTool-用来实现各编辑操作,这个项目所包含的类从功能上可分为三种:
Command(命令类)、Tool(工具类)、BasicClass(公共基础类),1.简介,4,实例分析,代码说明Command文件夹包含的类是以命令方式来实现编辑操作的,运行时单击对应按钮即可如:
UndoCommandClass(撤销操作类)、RedoCommandClass(恢复操作类)、DelFeatureCommandClass(删除要素操作类)等Tool文件夹包含的类是以工具的方式(即鼠标与视图交互的方式)来实现编辑操作的如AddVertexToolClass(添加节点工具类)、MoveVertexToolClass(移动节点工具类)、DelVertexToolClass(删除节点工具类)、MoveFeatureToolClass(移动要素工具类)等BasicClass文件夹包含的类有:
EditVertexClass(编辑节点类)、MapManager(视图控制类)、SupportZMFeatureClass(修改Z、M值类)等,1.简介,5,简介,
(1)ArcGISEngine的编辑过程就是用户通过鼠标与控件进行点、线、面等几何对象的添加、修改、删除等可视化的交互过程,2.编辑对象,6,
(2)要想更好的理解这个交互过程,需要了解编辑过程中的几何对象及DisplayFeedback对象,几何对象,
(1)Geometry类是所有几何对象的父类,它是一个抽象类
(2)IGeometry接口定义了所有的几何对象都拥有的属性或方法Dimension-用于查询几何形体对象的维度Envelope-用于返回几何对象的包络线GeometryType-可以返回查询对象的类型(3)当使用new关键字创建一个几何对象后,这个Geometry其实是空的,需要给它添加具体的信息新建一个Point对象后,如果不设置它的X、Y坐标,这个点是无法明确显示的,2.编辑对象,7,几何对象,几何对象分为两种层次:
构成要素形状的几何图形,如Point、Polyline、Envelope等构成这些形状的组成部分,如Path、Segment等,几何对象关系图,2.编辑对象,8,几何对象,高级几何对象Point对象是一个0维的几何图形,具有X、Y坐标值,以及可选的属性。
如高程(Z值)、测量值(M)和ID号,它用于描述需要精确定位的对象MultiPoint点集对象是无序点的集群,它用于表示具有相同属性设置的同一组点,是由多个点组成的一个点状地理对象。
Envelope包络线是一个矩形,它用于表示要素的空间范围。
它覆盖了几何对象的最小坐标和最大坐标,同时也记录了几何对象的Z值和M值的变化范围。
所有的几何形体对象都拥有一个包络线。
2.编辑对象,9,几何对象,高级几何对象Polyline多义线是一个有序路径(Path)的集合,这些路径既可以是连续的,也可以是离散的。
这个对象可以用于表示具有线状特征的对象,如河流、公路和等高线等Polygon多边形是环(Ring)的集合,环是一个封闭的路径。
Polygon可以由一个或者多个环组成,设置环内套环,形成岛环的情况,但是内外环之间不能重叠,对于一个给定的点而言,它总是在多边形“内部”、“外部”或者“边界上”,它通常用于描述具有面状特性的要素,2.编辑对象,10,几何对象,高级几何对象的的组成构件
(1)Polyline是由Path组成的
(2)Polygon是由Ring组成的(3)Path是连续的Segment的集合除了路径的第一个Segment和最后一个Segment外,其余的Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离Path可以是任意数的Line,CircularArc,EllipticArc和BezierCurve的组合Segment是连接起点和终点的一段直线或曲线,Path与Segment,2.编辑对象,11,几何对象,高级几何对象的的组成构件,Ring是一种封闭的路径Ring的起始点是同一点Ring对象具有“内部”和“外部”属性由于Ring是封闭的Path,因此其组成可以看作是一系列首尾相连的同方向的Segment对象,并且不能自相交,Ring,2.编辑对象,12,几何对象,Point和MultiPoint对象IPoint定义了Point对象的属性和方法,ID属性返回点对象的ID号,M、Z值返回点的测度值和高程值,X、Y返回点的X、Y坐标值。
PutCoords用于设置一个点的X、Y坐标值,当用户新生成一个点后,使用该方法来创建一个实际的点对象。
2.编辑对象,13,几何对象,Point和MultiPoint对象点集(MultiPoint)是具有相同属性的点的集合在构成高级几何对象、几何对象动态模拟等方面起重要的作用IMultiPoint是MultiPoint类的接口用来判断某个对象是否是MultiPoint对象MultiPoint对象的Add方法可以将一个点添加到它的集合中去该过程需要使用IPointCollection接口来完成,2.编辑对象,14,几何对象,Envelope对象Envelope(包络线)是一个几何形体的最小边框矩形,每一个Geometry对象都有一个包络线对象,包络线对象定义了最大、最小Z值、M值,这两个值可以分别通过IZAware、IMare接口来定义。
2.编辑对象,15,几何对象,Polyline对象Polyline对象是相连或不相连的路径对象的有序集合,它可以分别是单个路径、多个不相连路径和多个相连路径的集合。
多个相连的Path组成的Polyline,2.编辑对象,16,只有一个Path组成的Polyline,多个分离的Path组成的Polyline,几何对象,Polygon对象Polygon用于描述一个具有面积的多边形的离散矢量对象,它是一个有序环对象的集合,这些环可以是一个或者多个。
单一外环,2.编辑对象,17,单一外环单一内环,多个外环和多个内环的两种情况,DisplayFeedback对象,是用户使用鼠标与控件进行可视化交互的对象集这种交互包括添加、移动要素或图形元素,以及改变它们的几何形状等该对象可用在不产生任何几何对象的任务中如测量两点之间的距离、多边形选择等生成新对象的DisplayFeedback,主要是以New开头的Feedback对象如生成多边形的NewPolygonFeedback、生成矩形的NewEnvelopeFeedback等在DisplayFeedback对象中,除去GroupFeedback子对象外,其他所有子对象都有相似的方法,按行为可分为两种类型:
返回一个新的Geometry仅为显示目的,2.编辑对象,18,DisplayFeedback对象,产生新Geometry的Feedback对象NewLineFeedback、NewPolygonFeedback、NewBezierCurveFeedback三个对象分别用来产生新的Polyline、Polygon、BezierCurve几何对象。
尽管产生不同几何对象的接口不一样,但三个接口的方法却基本一致:
在MouseDown事件中使用Start方法添加一个起始点或者中间点在MouseMove事件中使用MoveTo方法来移动几何形体对象到一个新的点在MouseDblClick事件中使用Stop方法返回所产生的几何对象,2.编辑对象,19,DisplayFeedback对象,产生新Geometry的Feedback对象NewEnvelopeFeedback对象实现了INewEnvelopeFeedback接口,该接口定义了产生一个矩形包络线的属性和方法。
其中Constraint属性是esriEnvelopeConstraints类型的枚举类型变量,用于限制交互产生矩形的包络线形状:
esriEnvelopeConstraintsNone-返回矩形形状不受限制esriEnvelopeConstraintsSquare-返回矩形为正方形esriEnvelopeConstraintsAspect-返回矩形对象的长宽成一定比例,2.编辑对象,20,DisplayFeedback对象,产生新Geometry的Feedback对象NewCircleFeedback类实现了INewCircleFeedback接口,该接口定义了产生一个圆形对象的属性和方法。
在绘制一个圆形几何对象时,首先选择一个点作为圆心,然后移动鼠标至特定的点,释放鼠标后确定圆的半径。
2.编辑对象,21,DisplayFeedback对象,移动整个几何形体对象移动点、线、包络线或多边形等几何对象需要用到以下四个类:
MovePointFeedback实现了IMovePointFeedback接口-用于实现对点对象的移动MoveLineFeedback实现了IMoveLineFeedback接口-用于实现对线对象的移动MoveEnvelopeFeedback实现了IMoveEnvelopeFeedback接口-用于实现对矩形对象的移动MovePolygonFeedback实现了IMovePolygonFeedback接口-用于实现对多边形对象的移动,2.编辑对象,22,DisplayFeedback对象,其它DisplayFeedback对象ResizeEnvelopeFeedback类用于改变一个Envelope对象的尺寸ResizeEdge属性-确定是移动Envelope的边还是角Constrains属性-确定整形时对象的尺寸比例旋转或伸缩已经存在的Polyline对象,需要使用IStretchLineFeedback接口Anchor属性-用于确定旋转过程中的固定点(锚点),该点一般被设置为Polyline的起始点或者终止点。
2.编辑对象,23,IEngineEditor接口介绍,在ArcGISEngine中开启编辑任务需使用EngineEditor类,它相当于ArcMap软件的Editor工具条。
EngineEditor类实现了IEngineEditor接口,它的功能是启动或者停止一个编辑流程。
主要方法和属性有以下9种:
StartEditing方法-用于开启一个编辑对象EnableUndoRedo方法-用来设置工作空间是否支持“恢复/撤销”的操作,3.开始编辑,24,IEngineEditor接口介绍,主要方法和属性有以下9种:
(3)AbortOperation方法-用于当在编辑过程中出现异常时取消所做的操作(4)StopEditing方法-用于在整个编辑流程完成后来结束编辑(5)GetTaskByUniqueName方法-用于通过名称从EngineEditor获得编辑任务(6)CurrentTask属性-用于获取当前的编辑任务(7)EditWorkspace属性-用于获得当前正在编辑的Workspace对象(8)EditState属性-用于查看当前的编辑状态(9)EditSessionMode属性-用来指明是否为版本化图层,3.开始编辑,25,功能实现,核心代码,3.开始编辑,26,IEngineEditLayers接口介绍,设置编辑图层需使用EngineEditor类的IEngineEditLayers接口,用于获取编辑会话过程中有关图层的信息,其方法和属性主要有以下4种:
(1)CurrentSubtype属性-用于返回目标图层的子类型
(2)TargetLayer属性-用于返回EngineEditor的目标图层(3)IsEditable方法-用于检查一个指定的图层是否可编辑(4)SetTargetLayer方法-用于设置EngineEditor的目标图层,4.设置编辑图层,27,功能实现,核心代码,4.设置编辑图层,28,IEngineEditTask接口介绍,设置编辑任务需使用IEngineEditTask接口,用于向EngineEditor的CurrentTask属性传递当前所指定的编辑任务,其方法和属性主要有以下7种:
(1)Activate方法-用于激活编辑任务
(2)Deactivate方法-用于撤销编辑绘画任务(3)OnDeleteSketch方法-用于删除编辑任务(4)onfinishSketch方法-用于完成编辑任务(5)UniqueName属性-用于返回一个编辑的唯一名称(6)Name属性-用于返回一个编辑任务的名称(7)GroupName属性-用于返回编辑任务所在的编辑组名,5.设置编辑任务,29,功能实现,核心代码,5.设置编辑任务,30,选择要素,编辑操作实现的功能包括:
选择要素、移动要素、撤销操作、恢复操作、添加要素和删除要素等。
选择要素是在当前地图窗口中进行要素选择的实现过程。
核心代码,6.编辑操作,31,选择要素,核心代码,6.编辑操作,32,移动要素,移动要素是为了改变几何对象的位置,实现思路,6.编辑操作,33,鼠标点击后,获取移动的起始点鼠标移动时,实现移动要素到指定点(3)释放鼠标左键时,完成移动要素事件,移动要素,核心代码,6.编辑操作,34,移动要素,核心代码,6.编辑操作,35,添加要素,添加要素的编辑操作中用到了NewMultiPointFeedback、NewPolygonFeedback、NewLineFeedback等对象。
实现思路,6.编辑操作,36,鼠标单击,获得第一个点坐标,添加第一个点鼠标移动时,创建的要素对象移动到鼠标移动点位置(3)双击鼠标左键时,获取所绘制的要素,添加要素,核心代码,6.编辑操作,37,添加要素,核心代码,6.编辑操作,38,添加要素,核心代码,6.编辑操作,39,删除要素,删除不合理的要素。
核心代码,6.编辑操作,40,撤销操作,使用UndoEditOperation方法恢复到错误发生前的状态。
核心代码,6.编辑操作,41,恢复操作,使用RedoEditOperation方法恢复到错误操作发生前的状态。
核心代码,6.编辑操作,42,简介,对已经存在的几何对象进行形状的修改时,需要对构成几何对象的节点进行编辑,包括添加节点、删除节点和移动节点等。
7.节点编辑,43,Polyline、Polygon和BezierCurve这三类几何对象,都是由节点(Vertex)构成其几何形状的。
可分别用LineMovePointFeedback、PolygonmovePointFeedback、BezierMovePointFeedback这三个对象来移动这三类几何对象上的节点,其移动节点的方法都是一样的,均由鼠标事件MouseDown、MouseMove、MouseUp来实现。
移动节点,鼠标点击时,获取点击位置的节点鼠标移动时,将选中节点移动到该点位置(3)释放鼠标左键时,重新绘制当前图形,移动Polyline、Polygon上的节点,实现思路,7.节点编辑,44,注:
详细代码可查看程序,添加或删除节点,
(1)添加新的节点主要是为了改变图形的形状
(2)删除节点主要是删除多余的节点(3)添加或删除节点都是在鼠标事件(如:
MouseDown)中完成的(4)添加或删除节点都是对鼠标单击处进行操作的,7.节点编辑,45,注:
详细代码可查看程序,简介,
(1)进行属性编辑的对象主要有以下两种:
1)新添加的几何对象(其属性值一般为空),8.属性编辑,46,2)已存在的对象(修改其属性信息)
(2)属性编辑需要用到set_Value方法,该方法用于给指定的字段赋值,在赋值完成之后还需要用Store方法来进行保存。
实现步骤,
(1)初始化窗体创建要素属性信息表
(2)在属性窗口中罗列目标图层中被选中的要素单击图层树中的要素时,填写所选要素的属性信息属性表窗中的单元格的值发生变化时,改变所选要素的属性值注:
详细代码可查看程序,8.属性编辑,47,9.保存编辑,48,简介在编辑操作完成后,使用StopEditing方法来实现对对象的保存。
核心代码,简介,10.结束编辑,49,结束编辑是将编辑会话停止,并且决定是否对所做的编辑进行保存等操作。
核心代码,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGIS Engine地理信息系统开发教程 第6章 空间数据编辑. Engine 地理信息系统 开发 教程 空间 数据 编辑