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

摘要:
研究发现,AE比其他GIS组件更容易使用,但也有一些bts。例如,AE没有提供用于图层编辑的工具栏,但最近,因为需要开发图层编辑功能来在程序中添加图元,所以我去查找信息,发现提供的帮助中有一个MapEditing的示例,但从AO的示例来看,我需要从按钮来考虑它。如果我这样做,我不妨直接使用AO来保存东西。在AE提供的工具栏上做一些事情。事实上,AE有一组类似的编辑按钮,用于编辑图形
发现AE比起其它的组件GIS来要好用的多
但也有一些bt的地方
比如说AE没有提供图层编辑的工具条

但最近因为程序里要添加图元
必须得开发图层编辑的功能

于是去找了找资料
发现自带的帮助里有一个MapEditing的示例
但是从AO的示例改造而来
需要从按钮写起
想想如果这样搞的话
倒不如直接用AO算了

一直想省点事
在AE自带的工具条上做点文章
其实AE中也有一组相似的编辑按钮,是用于编辑Graphics的
自然就有了一个想法:能不能先生成一个Graphic,然后将其加载进来

琢磨了几日,终于实现了
现在把代码拿出来和大家分享

private void Form1_Load(object sender, System.EventArgs e)
{
        //清空图层
        this.axMapControl1.Map.ClearLayers();

        //加载服务器SDE地图信息
        ESRI.ArcGIS.esriSystem.IPropertySet Proset = new ESRI.ArcGIS.esriSystem.PropertySetClass();//属性集
        ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;//工作空间仓库
        ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;//工作空间
           
        Proset.SetProperty("Server","服务器名");//服务器名
        Proset.SetProperty("Instance","端口");//实例化端口
        Proset.SetProperty("user","用户名");//SDE用户名
        Proset.SetProperty("password","密码");//密码
        Proset.SetProperty("version","sde.DEFAULT");//连接版本

        Fact = new ESRI.ArcGIS.DataSourcesGDB.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.IFeatureClass 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();//更新空白区域
        axMapControl1.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 GraphicsContainerSelect = (IGraphicsContainerSelect)axMapControl1.Map;

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

        {
                MessageBox.Show("请选中欲导入图斑!");
                return;
        }

        IWorkspaceEdit WorkspaceEdit;
        IFeatureLayer FeatureLayer;
        IFeatureClass FeatureClass;
        IFeature Feature;
        IDataset Dataset;

        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);//结束编辑并保存

        IGraphicsContainer GraphicsContainer = (IGraphicsContainer)GraphicsContainerSelect;
        GraphicsContainer.DeleteAllElements();//删除graphic图层
           
        axMapControl1.ActiveView.Refresh();//刷新当前视图

        MessageBox.Show("ok");
}

免责声明:文章转载自《用ArcEngine的工具条添加图层要素》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Intellij插件之JRebelNopCommerce架构分析之一----依赖类生成容器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ArcGis连接oracle、oracle配置

服务器:Oracle11g(我是默认路径安装,自定义路径没成功,不知道为什么) 客户端:arcgis desktop 10.2、oracle 11g 32位客户端 客户端:arcgis server 10.2、oracle 11g 64位客户端 1、服务器上安装oracle 11g,客户端安装arcgis desktop 10.2对应oracle 11g...

java web后台调用自定义arctoolbox(开发的程序放到tomcat容器运行)

写在前面: 前一段时间测试了普通 java 工程调用 ArcObject 10.5(下文简称AO)的功能,主要想在程序调用自定义arctoolbox模型,完成一些功能,在将该功能转换成web工程时,出现一些问题,现将解决方式记录下来,以备将来查阅。 1、开发环境: ArcGIS 10.5,myeclipse 2014, jdk 1.8 32位,tomcat...

ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)

ArcGIS中最基本的三种矢量数据是什么?点线面。 网络中除了路网之外,还会有地物点。 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网。但是在大型的决策任务中,网络数据集就不只是公路网那么简单了。 在城市与城市之间,有高速公路,国道,高铁,普铁,甚至还有水路。 如此复杂的网络模型是如何连通的呢?他们之间的交点又有什么样的连通方式呢?在...

基于ArcGIS API for Javascript的地图编辑工具

转自:http://www.cnblogs.com/znlgis/p/3505646.html 最近工作上需要用ArcGIS API for Javascript来开发一个浏览器上使用的地图编辑工具,分享一下一些相关的开发经验。 我开发的地图编辑工具是根据ESRI提供的例子修改而来的,参考的例子是https://developers.arcgis.com/...

ArcGIS 10 安装程序及破解文件

1、下载 ArcGIS 10 安装程序及破解文件 后面提供电驴的下载地址(可以使用迅雷、QQ旋风等下载工具下载),下载文件是一个光盘镜像文件:‍ArcGIS_Desktop10_122519.iso。 2、进行 ArcGIS 10 的安装 首先确保系统已安装 .NET Framework 3.5 SP1,如果没有安装去微软官网下载安装,地址:.NET Fr...

arcgis属性选取like用法

查询对象为ArcInfo coverage,shapefile, INFO table,dBASE table,ArcSDE data,ArcIMS 要素类,或者 ArcIMS image service 子图层: '_' indicates one character    '%' indicates any number of characters.查...