用ArcEngine的工具条添加图层要素.docx

上传人:b****3 文档编号:1308028 上传时间:2022-10-20 格式:DOCX 页数:112 大小:114.98KB
下载 相关 举报
用ArcEngine的工具条添加图层要素.docx_第1页
第1页 / 共112页
用ArcEngine的工具条添加图层要素.docx_第2页
第2页 / 共112页
用ArcEngine的工具条添加图层要素.docx_第3页
第3页 / 共112页
用ArcEngine的工具条添加图层要素.docx_第4页
第4页 / 共112页
用ArcEngine的工具条添加图层要素.docx_第5页
第5页 / 共112页
点击查看更多>>
下载资源
资源描述

用ArcEngine的工具条添加图层要素.docx

《用ArcEngine的工具条添加图层要素.docx》由会员分享,可在线阅读,更多相关《用ArcEngine的工具条添加图层要素.docx(112页珍藏版)》请在冰豆网上搜索。

用ArcEngine的工具条添加图层要素.docx

用ArcEngine的工具条添加图层要素

1.目录

1.目录1

2.用ArcEngine的工具条添加图层要素2

3.ArcEngine中对Feature的编辑5

4.Feature的概念6

5.如何实现经度纬度到平面坐标的相互转换?

(转载)7

6.ArcEngine最短路径分析(源码)9

7.ArcEngine中使用上下左右键移动地图功能的实现15

8.缓冲区的创建16

9.C#制作鹰眼全过程(引自ESRI中国社区)18

10.ArcEngine中拓扑的使用--20

11.为什么使用接口编程{转载}23

12.ArcEngine中闪烁目标26

13.创建多个ArcSDE实例29

14.Geometry对象浅析30

15.空间查询与空间分析功能36

16.AO中的空间关系38

17.ArcGISEngine中的相交分析的实现40

18.GIS基本概念集锦42

19.AE开发中矢量图层叠加求交分析45

20.矢量数据分析50

21.GIS空间信息基本分析方法50

22.如何判断图形间的逻辑运算53

23.AE中2种方式overlay54

24.ArcEngine中实现捕捉功能58

25.在LAYER(i)上添加缓冲区79

26.C#编码标准--编码习惯80

27.基于AE删除选择的要素--96

28.基于AO/AE获取要素信息97

29.ArcEngine中拓扑的使用--100

30.ArcEngine渲染的使用103

31.利用ArcEngin进行空间分析的简单应用--110

32.IfeatureSelection:

SelectFeatures方法介绍114

33.常用数据入sde库的代码116

34.ArcEngine开发感想122

35.Geometry对象浅析124

36.AE开发中的一些基本方法

(1)数据连接134

2.用ArcEngine的工具条添加图层要素

发现AE比起其它的组件GIS来要好用的多

但也有一些bt的地方

比如说AE没有提供图层编辑的工具条

但最近因为程序里要添加图元

必须得开发图层编辑的功能

于是去找了找资料

发现自带的帮助里有一个MapEditing的示例

但是从AO的示例改造而来

需要从按钮写起

想想如果这样搞的话

倒不如直接用AO算了

一直想省点事

在AE自带的工具条上做点文章

其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的

自然就有了一个想法:

能不能先生成一个Graphic,然后将其加载进来

琢磨了几日,终于实现了

现在把代码拿出来和大家分享

privatevoidForm1_Load(objectsender,System.EventArgse)

{

       //清空图层

       this.axMapControl1.Map.ClearLayers();

       //加载服务器SDE地图信息

ESRI.ArcGIS.esriSystem.IpropertySetProset=newESRI.ArcGIS.esriSystem.PropertySetClass();

//属性集

       ESRI.ArcGIS.Geodatabase.IWorkspaceFactoryFact;//工作空间仓库

       ESRI.ArcGIS.Geodatabase.IWorkspaceWorkspace;//工作空间

           

       Proset.SetProperty("Server","服务器名");//服务器名

       Proset.SetProperty("Instance","端口");//实例化端口

       Proset.SetProperty("user","用户名");//SDE用户名

       Proset.SetProperty("password","密码");//密码

       Proset.SetProperty("version","sde.DEFAULT");//连接版本

Fact=newESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();//实例化为SDE工作空间仓库

Workspace=Fact.Open(Proset,Int32.Parse(this.Handle.ToString()));//填入属性集

       

ESRI.ArcGIS.Geodatabase.IFeatureWorkspaceFeatureWorkspace;

FeatureWorkspace=WorkspaceasESRI.ArcGIS.Geodatabase.IFeatureWorkspace;//传递给Feature工作空间

       ESRI.ArcGIS.Geodatabase.IFeatureClassFeatureClass;

       FeatureClass=FeatureWorkspace.OpenFeatureClass("SDE.BBBB");//填充所需Feature集合

       ESRI.ArcGIS.Carto.FeatureLayerFLayer=newESRI.ArcGIS.Carto.FeatureLayerClass();

       FLayer.FeatureClass=FeatureClass;//将Feature加载到图层

       axMapControl1.Map.AddLayer(FLayer);//加载图层

       axMapControl1.Update();//更新空白区域

       axMapControl1.Refresh();//刷新地图视窗

}

privatevoidForm1_Closed(objectsender,System.EventArgse)

{

       ESRI.ArcGIS.esriSystem.IAoInitializeaoi=newESRI.ArcGIS.esriSystem.AoInitializeClass();

       aoi.Shutdown();

}

privatevoidbutton1_Click(objectsender,System.EventArgse)

{

       IGraphicsContainerSelectGraphicsContainerSelect=(IGraphicsContainerSelect)axMapControl1.Map;

       if(GraphicsContainerSelect.ElementSelectionCount==0)//判断是否选中图斑

       {

               MessageBox.Show("请选中欲导入图斑!

");

               return;

       }

       IWorkspaceEditWorkspaceEdit;

       IFeatureLayerFeatureLayer;

       IFeatureClassFeatureClass;

       IFeatureFeature;

       IDatasetDataset;

       FeatureLayer=(IFeatureLayer)this.axMapControl1.get_Layer(0);//选中导入图层

           FeatureClass=FeatureLayer.FeatureClass;//该图层的feature集

       Dataset=(IDataset)FeatureClass;//该图层的数据集

       WorkspaceEdit=(IWorkspaceEdit)Dataset.Workspace;//关联到编辑空间

       WorkspaceEdit.StartEditing(true);//使之可编辑

       WorkspaceEdit.StartEditOperation();//开始编辑

       Feature=FeatureClass.CreateFeature();//创建空feature

       Feature.Shape=GraphicsContainerSelect.SelectedElement(0).Geometry;//仅导入最新选中图斑,即多选时只有一个可以导入

       Feature.Store();

       WorkspaceEdit.StopEditOperation();

       WorkspaceEdit.StopEditing(true);//结束编辑并保存

       IGraphicsContainerGraphicsContainer=(IGraphicsContainer)GraphicsContainerSelect;

       GraphicsContainer.DeleteAllElements();//删除graphic图层

       axMapControl1.ActiveView.Refresh();//刷新当前视图

       MessageBox.Show("ok");

}

3.ArcEngine中对Feature的编辑

对Feature的编辑分为以下几个部分

1.新建

2.修改

3.删除

涉及到的接口有以下几个

IWorkspaceEdit

IFeatureClass

IFeatureCursor

IFeature

其中IWorkspaceEdit用于启动编辑开始编辑操作结束编辑操作结束编辑

IFeatureClass是数据的所在地

IFeatureCursor是一个游标提供访问数据的接口和修改数据的接口

IFeature是对象的代表我们要编辑的目标

编辑的过程如下:

1.添加一个Feature

//假设space是一个IWorkspaceEdit

//参数表示是否需要使用Undo/Redo功能,该功能的粒度是EditOperator.

spaceEdit.StartEditing(false);

spaceEdit.StartEditOperator();

  //添加一个Feature

  IFeaturenewFea=feaClass.createFeature();

  //为Feature添加属性设置图形

  newFea.Store();//保存属性和图形

  spaceEdit.StopEditOperator();//结束编辑操作

//结束编辑过程

//参数表示是否保存编辑

spaceEdit.StopEditing(true);

2.添加多个Feature

 添加多个Feature也可以向上面一样使用多次就可以了

 当时也可以使用IFeatureCursor来添加数据

 3.修改Feature

  添加Feature中的修改

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1