VS2010---Arcgis Engine10.2移动要素

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using GISEditor.EditTool.BasicClass;
using GISEditor.EditTool.Tool;
using GISEditor.EditTool.Command;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;
namespace GISEditor
{
    public partial class Form1 : Form
    {


        #region 变量定义
        private string sMxdPath = Application.StartupPath;
        private IMap pMap = null;
        private IActiveView pActiveView = null;
        private List<ILayer> plstLayers = null;
        private IFeatureLayer pCurrentLyr = null;
        private IEngineEditor pEngineEditor = null;
        private IEngineEditTask pEngineEditTask = null;
        private IEngineEditLayers pEngineEditLayers = null;


        #endregion
        public Form1()
        {
            InitializeComponent();
            InitObject();
        }
         private void InitObject()
        {
            try
            {
                ChangeButtonState(false);
                pEngineEditor = new EngineEditorClass();
                MapManager.EngineEditor = pEngineEditor;
                pEngineEditTask = pEngineEditor as IEngineEditTask;
                pEngineEditLayers = pEngineEditor as IEngineEditLayers;
                sMxdPath = @"E:\地理信息系统开发教程第一版)-牟乃夏\chp06\空间数据编辑\data\edit.mxd"; ; 
                if (mainMapControl.CheckMxFile(sMxdPath))
                {
                    mainMapControl.LoadMxFile(sMxdPath);
                }
                pMap = mainMapControl.Map;
                pActiveView = pMap as IActiveView;
                plstLayers = MapManager.GetLayers(pMap);
            }
            catch (Exception ex)
            {


            }
        }


         private void btnStartEdit_Click(object sender, EventArgs e)
         {
             try
             {
                 if (plstLayers == null || plstLayers.Count == 0)
                 {
                     MessageBox.Show("请加载编辑图层!", "提示",
                         MessageBoxButtons.OK, MessageBoxIcon.Information);
                     return;
                 }


                 pMap.ClearSelection();
                 pActiveView.Refresh();
                 InitComboBox(plstLayers);
                 ChangeButtonState(true);
                 //如果编辑已经开始,则直接退出
                 if (pEngineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
                     return;
                 if (pCurrentLyr == null) return;
                 //获取当前编辑图层工作空间
                 IDataset pDataSet = pCurrentLyr.FeatureClass as IDataset;
                 IWorkspace pWs = pDataSet.Workspace;
                 //设置编辑模式,如果是ArcSDE采用版本模式
                 if (pWs.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                 {
                     pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeVersioned;
                 }
                 else
                 {
                     pEngineEditor.EditSessionMode = esriEngineEditSessionMode.esriEngineEditSessionModeNonVersioned;
                 }
                 //设置编辑任务
                 pEngineEditTask = pEngineEditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask");
                 pEngineEditor.CurrentTask = pEngineEditTask;// 设置编辑任务
                 pEngineEditor.EnableUndoRedo(true); //是否可以进行撤销、恢复操作
                 pEngineEditor.StartEditing(pWs, pMap); //开始编辑操作
             }
             catch (Exception ex)
             {
             }
         }


         private void btnSaveEdit_Click(object sender, EventArgs e)
         {
             try
             {
                 ICommand m_saveEditCom = new SaveEditCommandClass();
                 m_saveEditCom.OnCreate(mainMapControl.Object);
                 m_saveEditCom.OnClick();
             }
             catch (Exception ex)
             {
             }
         }


         private void btnEndEdit_Click(object sender, EventArgs e)
         {
             try
             {
                 ICommand m_stopEditCom = new StopEditCommandClass();
                 m_stopEditCom.OnCreate(mainMapControl.Object);
                 m_stopEditCom.OnClick();
                 ChangeButtonState(false);
                 mainMapControl.CurrentTool = null;
                 mainMapControl.MousePointer = esriControlsMousePointer.esriPointerDefault;
             }
             catch (Exception ex)
             {
             }
         }


         private void cmbSelLayer_SelectedIndexChanged(object sender, EventArgs e)
         {
             try
             {
                 string sLyrName = cmbSelLayer.SelectedItem.ToString();
                 pCurrentLyr = MapManager.GetLayerByName(pMap, sLyrName) as IFeatureLayer;
                 //设置编辑目标图层
                 pEngineEditLayers.SetTargetLayer(pCurrentLyr, 0);
             }
             catch (Exception ex)
             {
             }
         }


         private void btnSelFeat_Click(object sender, EventArgs e)
         {
             try
             {
                 ICommand m_SelTool = new SelectFeatureToolClass();
                 m_SelTool.OnCreate(mainMapControl.Object);
                 m_SelTool.OnClick();
                 mainMapControl.CurrentTool = m_SelTool as ITool;
                 mainMapControl.MousePointer = esriControlsMousePointer.esriPointerArrow;
             }
             catch (Exception ex)
             {
             }


         }


         private void btnSelMove_Click(object sender, EventArgs e)
         {
             try
             {
                 ICommand m_moveTool = new MoveFeatureToolClass();
                 m_moveTool.OnCreate(mainMapControl.Object);
                 m_moveTool.OnClick();
                 mainMapControl.CurrentTool = m_moveTool as ITool;
                 mainMapControl.MousePointer = esriControlsMousePointer.esriPointerArrow;
             }
             catch (Exception ex)
             {
             }
         }
         private void ChangeButtonState(bool bEnable)
         {
             btnStartEdit.Enabled = !bEnable;
             btnSaveEdit.Enabled = bEnable;
             btnEndEdit.Enabled = bEnable;


             cmbSelLayer.Enabled = bEnable;


             btnSelFeat.Enabled = bEnable;
             btnSelMove.Enabled = bEnable;
             //btnAddFeature.Enabled = bEnable;
             //btnDelFeature.Enabled = bEnable;
             //btnAttributeEdit.Enabled = bEnable;
             //btnUndo.Enabled = bEnable;
             //btnRedo.Enabled = bEnable;
             //btnMoveVertex.Enabled = bEnable;
             //btnAddVertex.Enabled = bEnable;
             //btnDelVertex.Enabled = bEnable;
         }


         private void InitComboBox(List<ILayer> plstLyr)
         {
             cmbSelLayer.Items.Clear();
             for (int i = 0; i < plstLyr.Count; i++)
             {
                 if (!cmbSelLayer.Items.Contains(plstLyr[i].Name))
                 {
                     cmbSelLayer.Items.Add(plstLyr[i].Name);
                 }
             }
             if (cmbSelLayer.Items.Count != 0) cmbSelLayer.SelectedIndex = 0;
         }


         public string getPath(string path)
         {
             int t;
             for (t = 0; t < path.Length; t++)
             {
                 if (path.Substring(t, 6) == "空间数据编辑")
                 {
                     break;
                 }
             }
             string name = path.Substring(0, t + 6);
             return name;
         }
        
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值