用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");
}

posted on 2013-04-15 13:29  大胡子青松  阅读(361)  评论(0编辑  收藏  举报

导航