江西理工大学–DevelopingGISApplications-江西理工大学研究生院.ppt
文本预览下载声明
GIS应用开发
Developing GIS Applications with ArcObjects using C#.NET
江西省研究生优质课程
主讲:兰小机 GIS博士、教授
Email : landcom8835@163.com
QQ :305333315
课程网站: /gis ;兰小机简历;科研项目;教学目标;Chap.10 空间数据编辑 (6学时);10.1 Overview of ArcGIS Engine editing;10.1.1 ArcGIS Engine 编辑与ArcMap编辑 ;要素的复制、剪切、粘贴和删除;ArcGIS Engine环境下的EditorToolbar、Editor Menu and Edit Task:;;撤销(undo) / 重复(redo) ;ArcGIS Engine的“Sketch Tool Context Menu”;ControlToolsEditing_SnapToFeatureMenu;ControlToolsEditing_SketchDirection;ControlToolsEditing_SketchSegmentDeflection;在ArcGIS 桌面环境中的主要编辑对象是Editor ,而在ArcGIS Engine开发中则是EngineEditor (单实例对象) ;在相应的应用程序中,它们负责管理编辑绘制(edit sketch)、当前任务(current task)、当前目标图层(current target layer)、编辑工作空间(edit workspace)、编辑选择(edit selection)、编辑会话属性(edit session properties)以及捕捉环境(snap environment)。
EngineEditor主要接口有:IEngineEditor、IEngineEditLayers、IEngineEditProperties、IEngineEditProperties2、IEngineEditSketch、IEngineSnapEnvironment、 IEngineEditEvents 、IExtension (System).;表10-1 ArcGIS Engine与ArcGIS Desktop编辑的主要接口比较;ArcMap Editor主要接口:;IEngineEditSketch ;IEngineEditProperties ;IEngineEditEvents (New in 9.3);IEngineEditTask ( new at ArcGIS 9.3 );10.1.2 编辑流程;通过把每个操作加入操作栈,实现编辑会话中的 undo /redo 功能。一旦编辑会话完成,所有操作都从操作栈删除。
加入到操作栈的绘制操作是暂时的,绘制完成后,一系列的绘制操作将被一个编辑操作取代,编辑会话结束后,操作栈将被清空。
使用IEngineEditor (Controls库)和IWorkspaceEdit (Geodatabase库)均可创建编辑会话。
在不需要用户交互自动完成空间数据编辑功能的应用程序中,应使用IWorkspaceEdit ;反之,在需要用户交互才能完成空间数据编辑的应用程序中,则使用IEngineEditor。 ;启动编辑会话;启动编辑会话:
private IEngineEditor m_engineEditor = new EngineEditorClass();
private void StartEditing (IMap map, IFeatureLayer featureLayer)
{
if (m_engineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing) return;
IDataset dataset = featureLayer.FeatureClass as IDataset;
IWorkspace workspace = dataset.Workspace;
m_engineEditor.StartEditing(workspace, map);
((IEngineEditLayers) m_engineEditor).SetTargetLayer(featureLayer
显示全部