ArcEngine开发之自定义工具栏--打开文件(C#)

来源:互联网 发布:淘宝商城劳保鞋 编辑:程序博客网 时间:2024/06/10 02:27

1、打开地图文档

创建GIS类,选择Base Command模版,类的名称为OpenNewMapDocument,选择第2类:ArcMap MapControl or PageLayoutControl command

以下为该文档的代码:

using System;using System.Drawing;using System.Windows.Forms;using System.Runtime.InteropServices;using ESRI.ArcGIS.ADF.BaseClasses;using ESRI.ArcGIS.ADF.CATIDs;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Carto;namespace GIS{    /// <summary>    /// Summary description for OpenNewMapDocument.    /// </summary>    [Guid("5bf50443-f852-47cd-9c96-984184b6cca6")]    [ClassInterface(ClassInterfaceType.None)]    [ProgId("MapAndPageLayoutSynchApp.OpenNewMapDocument")]    public sealed class OpenNewMapDocument : BaseCommand    {        #region COM Registration Function(s)        [ComRegisterFunction()]        [ComVisible(false)]        static void RegisterFunction(Type registerType)        {            // Required for ArcGIS Component Category Registrar support            ArcGISCategoryRegistration(registerType);            //            // TODO: Add any COM registration code here            //        }        [ComUnregisterFunction()]        [ComVisible(false)]        static void UnregisterFunction(Type registerType)        {            // Required for ArcGIS Component Category Registrar support            ArcGISCategoryUnregistration(registerType);            //            // TODO: Add any COM unregistration code here            //        }        #region ArcGIS Component Category Registrar generated code        /// <summary>        /// Required method for ArcGIS Component Category registration -        /// Do not modify the contents of this method with the code editor.        /// </summary>        private static void ArcGISCategoryRegistration(Type registerType)        {            string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);            ControlsCommands.Register(regKey);        }        /// <summary>        /// Required method for ArcGIS Component Category unregistration -        /// Do not modify the contents of this method with the code editor.        /// </summary>        private static void ArcGISCategoryUnregistration(Type registerType)        {            string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);            ControlsCommands.Unregister(regKey);        }        #endregion        #endregion        private IHookHelper m_hookHelper;        private ControlsSynchronizer m_controlsSynchronizer = null;        private string m_sDocumentPath = string.Empty;        public OpenNewMapDocument(ControlsSynchronizer controlsSynchronizer)        {            base.m_category = ".NET Samples";            base.m_caption = "Open Map Document";            base.m_message = "Open Map Document";            base.m_toolTip = "Open Map Document";            base.m_name = "DotNetSamplesOpenMapDocument";            m_controlsSynchronizer = controlsSynchronizer;            try            {                string bitmapResourceName = GetType().Name + ".bmp";                base.m_bitmap = new Bitmap(GetType(), bitmapResourceName);            }            catch (Exception ex)            {                System.Diagnostics.Trace.WriteLine(ex.Message, "Invalid Bitmap");            }        }        #region Overriden Class Methods        /// <summary>        /// Occurs when this command is created        /// </summary>        /// <param name="hook">Instance of the application</param>        public override void OnCreate(object hook)        {            if (hook == null)                return;            if (m_hookHelper == null)                m_hookHelper = new HookHelperClass();            m_hookHelper.Hook = hook;        }        /// <summary>        /// Occurs when this command is clicked        /// </summary>        public override void OnClick()        {            //launch a new OpenFile dialog            OpenFileDialog dlg = new OpenFileDialog();            dlg.Filter = "Map Documents (*.mxd)|*.mxd";            dlg.Multiselect = false;            dlg.Title = "Open Map Document";            if (dlg.ShowDialog() == DialogResult.OK)            {                string docName = dlg.FileName;                IMapDocument mapDoc = new MapDocumentClass();                if (mapDoc.get_IsPresent(docName) && !mapDoc.get_IsPasswordProtected(docName))                {                    mapDoc.Open(docName, string.Empty);                    // set the first map as the active view                    IMap map = mapDoc.get_Map(0);                    mapDoc.SetActiveView((IActiveView)map);                    m_controlsSynchronizer.PageLayoutControl.PageLayout = mapDoc.PageLayout;                    m_controlsSynchronizer.ReplaceMap(map);                    mapDoc.Close();                    m_sDocumentPath = docName;                }            }        }        #endregion        public string DocumentFileName        {            get { return m_sDocumentPath; }        }    }}

 

调用此命令:

 OpenNewMapDocument openMapDoc =new OpenNewMapDocument(m_controlsSynchronizer);            openMapDoc.OnCreate(m_controlsSynchronizer.MapControl.Object);            openMapDoc.OnClick();

 

2、打开shapefile文件

//添加Shapefile文件函数        public void AddShapefile()        {            ESRI.ArcGIS.Carto.IActiveView activeView = axMapControl1.ActiveView;            ESRI.ArcGIS.Carto.IActiveView activeView1 = axMapControl2.ActiveView;            if (activeView == null)            {                return;            }            if (activeView1 == null)            {                return;            }            System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();            openFileDialog.Filter = "Shapefiles (*.shp)|*.shp";            if (openFileDialog.ShowDialog() == DialogResult.OK)            {                string shapefileLocation = openFileDialog.FileName;                string pathFile = shapefileLocation;                if (shapefileLocation != "")                {                    IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0);                    IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation));                    IFeatureLayer featureLayer = new FeatureLayerClass();                    featureLayer.FeatureClass = featureClass;                    featureLayer.Name = featureClass.AliasName;                    featureLayer.Visible = true;                                        //添加到主窗口中的代码                    activeView.FocusMap.AddLayer(featureLayer);                    activeView.Extent = activeView.FullExtent;                    activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);                    //添加到鹰眼视图窗口中的代码                    activeView1.FocusMap.AddLayer(featureLayer);                    activeView1.Extent = activeView1.FullExtent;                    activeView1.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);                }                else                {                    MessageBox.Show("操作出错啦!");                }            }        }


 注:希望与大家分享下自己查找到的或者自己修改后的代码,新手学习,若有错误欢迎批评指正!

原创粉丝点击