用ArcEngine的工具条添加图层要素.docx
- 文档编号:1308028
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:112
- 大小:114.98KB
用ArcEngine的工具条添加图层要素.docx
《用ArcEngine的工具条添加图层要素.docx》由会员分享,可在线阅读,更多相关《用ArcEngine的工具条添加图层要素.docx(112页珍藏版)》请在冰豆网上搜索。
用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中的修改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcEngine 工具条 添加 要素