zoukankan      html  css  js  c++  java
  • 用ArcEngine的工具条添加图层要素

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

    2008-03-25 01:43:41|  分类: 专业之AO|字号 订阅

     
     
    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");
    }
  • 相关阅读:
    Asp.Net Core 轻松学-被低估的过滤器
    Asp.Net Core 轻松学-利用文件监视进行快速测试开发
    Asp.Net Core 轻松学-利用xUnit进行主机级别的网络集成测试
    Asp.Net Core 轻松学-HttpClient的演进和避坑
    Asp.Net Core 轻松学-基于微服务的后台任务调度管理器
    Asp.Net Core 轻松学-一行代码搞定文件上传
    .NET Core 2.2 新增部分功能使用尝鲜
    Asp.NetCore轻松学-业务重点-实现一个简单的手机号码验证
    Asp.Net Core 轻松学-实现跨平台的自定义Json数据包
    Asp.Net Core 轻松学-利用 Swagger 自动生成接口文档
  • 原文地址:https://www.cnblogs.com/xianyin05/p/3021920.html
Copyright © 2011-2022 走看看