1、16. AO中的空间关系 3817. ArcGIS Engine 中的相交分析的实现 4018. GIS基本概念集锦 4219. AE开发中矢量图层叠加求交分析 4520. 矢量数据分析 5021. GIS空间信息基本分析方法 5022. 如何判断图形间的逻辑运算 5323. AE中2种方式overlay 5424. ArcEngine中实现捕捉功能 5825. 在LAYER(i)上添加缓冲区 7926. C#编码标准编码习惯 8027. 基于AE删除选择的要素- - 9628. 基于AO/AE获取要素信息 9729. ArcEngine中拓扑的使用- - 10030. ArcEngine 渲
2、染的使用 10331. 利用ArcEngin进行空间分析的简单应用- - 11032. IfeatureSelection:SelectFeatures方法介绍 11433. 常用数据入sde库的代码 11634. ArcEngine开发感想 12235. Geometry 对象浅析 12436. AE开发中的一些基本方法(1)数据连接 1342. 用ArcEngine的工具条添加图层要素发现AE比起其它的组件GIS来要好用的多但也有一些bt的地方比如说AE没有提供图层编辑的工具条但最近因为程序里要添加图元必须得开发图层编辑的功能于是去找了找资料发现自带的帮助里有一个MapEditing的示例
3、但是从AO的示例改造而来需要从按钮写起想想如果这样搞的话倒不如直接用AO算了一直想省点事在AE自带的工具条上做点文章其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的自然就有了一个想法:能不能先生成一个Graphic,然后将其加载进来琢磨了几日,终于实现了现在把代码拿出来和大家分享private void Form1_Load(object sender, System.EventArgs e) /清空图层 this.axMapControl1.Map.ClearLayers(); /加载服务器SDE地图信息ESRI.ArcGIS.esriSystem.IpropertySet P
4、roset = new ESRI.ArcGIS.esriSystem.PropertySetClass();/属性集 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;/工作空间仓库 ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;/工作空间 Proset.SetProperty(Server,服务器名);/服务器名Instance端口/实例化端口user用户名/SDE用户名password密码/密码versionsde.DEFAULT/连接版本Fact = new ESRI.ArcGIS.DataSourc
5、esGDB.SdeWorkspaceFactoryClass();/实例化为SDE工作空间仓库Workspace = Fact.Open(Proset,Int32.Parse(this.Handle.ToString();/填入属性集ESRI.ArcGIS.Geodatabase.IFeatureWorkspace FeatureWorkspace;FeatureWorkspace = Workspace as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace;/传递给Feature工作空间 ESRI.ArcGIS.Geodatabase.IFeatureCl
6、ass FeatureClass; FeatureClass = FeatureWorkspace.OpenFeatureClass(SDE.BBBB/填充所需Feature集合 ESRI.ArcGIS.Carto.FeatureLayer FLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass(); FLayer.FeatureClass = FeatureClass;/将Feature加载到图层 axMapControl1.Map.AddLayer(FLayer);/加载图层 axMapControl1.Update();/更新空白区域 axMap
7、Control1.Refresh();/刷新地图视窗private void Form1_Closed(object sender, System.EventArgs e) ESRI.ArcGIS.esriSystem.IAoInitialize aoi = new ESRI.ArcGIS.esriSystem.AoInitializeClass(); aoi.Shutdown();private void button1_Click(object sender, System.EventArgs e) IGraphicsContainerSelect GraphicsContainerSel
8、ect = (IGraphicsContainerSelect)axMapControl1.Map; if(GraphicsContainerSelect.ElementSelectionCount =0)/判断是否选中图斑 MessageBox.Show(请选中欲导入图斑! return; IWorkspaceEdit WorkspaceEdit; IFeatureLayer FeatureLayer; IFeatureClass FeatureClass; IFeature Feature; IDataset Dataset; FeatureLayer = (IFeatureLayer)t
9、his.axMapControl1.get_Layer(0);/选中导入图层 FeatureClass = FeatureLayer.FeatureClass;/该图层的feature集 Dataset = (IDataset)FeatureClass;/该图层的数据集 WorkspaceEdit = (IWorkspaceEdit)Dataset.Workspace;/关联到编辑空间 WorkspaceEdit.StartEditing(true);/使之可编辑 WorkspaceEdit.StartEditOperation();/开始编辑 Feature = FeatureClass.C
10、reateFeature();/创建空feature Feature.Shape = GraphicsContainerSelect.SelectedElement(0).Geometry;/仅导入最新选中图斑,即多选时只有一个可以导入 Feature.Store(); WorkspaceEdit.StopEditOperation(); WorkspaceEdit.StopEditing(true);/结束编辑并保存 IGraphicsContainer GraphicsContainer = (IGraphicsContainer)GraphicsContainerSelect; Grap
11、hicsContainer.DeleteAllElements();/删除graphic图层 axMapControl1.ActiveView.Refresh();/刷新当前视图ok3. ArcEngine中对Feature的编辑对Feature的编辑分为以下几个部分1.新建2.修改3.删除涉及到的接口有以下几个IWorkspaceEditIFeatureClassIFeatureCursorIFeature其中IWorkspaceEdit用于启动编辑 开始编辑操作 结束编辑操作 结束编辑IFeatureClass 是数据的所在地IFeatureCursor 是一个游标 提供访问数据的接口和修
12、改数据的接口IFeature 是对象的代表 我们要编辑的目标编辑的过程如下:1.添加一个Feature/假设space是一个IWorkspaceEdit/参数表示是否需要使用Undo/Redo功能,该功能的粒度是EditOperator.spaceEdit.StartEditing(false);spaceEdit.StartEditOperator();/添加一个FeatureIFeature newFea=feaClass.createFeature();/为Feature 添加属性 设置图形newFea.Store();/保存属性和图形spaceEdit.StopEditOperator();/结束编辑操作/结束编辑过程/参数表示是否保存编辑spaceEdit.StopEditing(true);2.添加多个Feature 添加多个Feature也可以向上面一样 使用多次就可以了 当时也可以使用IFeatureCursor来添加数据3.修改Feature 添加Feature中的修改
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1