1、加载地图文档

在ArcGIS中,以mxd作为扩展名的文件叫地图文档。

地图文档中只是包含图层的引用,即存储当前地图的图层路径、符号、状态、修饰等信息,并不存储真实的数据层

ArcGIS Map中,图层(Layer)是地图(Map)的基本组成单位。图层可以是要素图层,也可以是栅格图层。要素图层有点、线、面3种显示不同类型要素类的图层,也有专题图层,如显示拓扑检查结果的图层、网络分析结果图层等;栅格图层是航片、遥感影像、数字高程模型、普通图片等。

介绍两种打开mxd文件的方法

方法一:运用LoadMxFile方法的函数参数加载地图文档

地图文档的加载功能将用到MapControl控件提供的LoadMxFile方法。

//三个参数(filePath——文件路径、0——地址名称或索引、Type.Missing——通过反射进行调用获取参数的默认值)
axMapControl1.LoadMxFile(filePath, 0, Type.Missing);

该方法通过指定的*.mxd文档路径直接获取。

该方法第一个参数是文件的路径第二个参数是mxd文档中地图的名称或者索引第三个参数是打开地图文档的密码


方法二:运用MapDocument对象中的Open方法的函数加载mxd文档

//filePath——地图文档的路径, ""——赋予默认密码
mapDocument.Open(filePath, "");

通过MapDocument对象对地图文档的地图逐个加载,MapDocument提供了Open方法,用于打开一个地图文档文
件,该方法的第一个参数为地图文档文件的路径,第二个参数为密码

 

核心代码:

#region 加载mxd地图文档
        private void 加载mxd地图文档toolStripLabel1_Click(object sender, EventArgs e)
        {
            //方法一:
            //loadMapDoc1();//调用MapControl控件的LoadMxFile方法

            //方法二:
            loadMapDoc2();
        }
        /// <summary>
        /// 方法二:运用MapDocument对象中的Open方法的函数加载mxd文档
        /// </summary>
        private void loadMapDoc2()
        {
            IMapDocument mapDocument = new MapDocumentClass();
            try
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "打开地图文档";
                ofd.Filter = "map documents(*.mxd)|*.mxd";
                if(ofd.ShowDialog()==DialogResult.OK)
                {
                    string filePath = ofd.FileName;
                    //filePath——地图文档的路径, ""——赋予默认密码
                    mapDocument.Open(filePath, "");
                    for (int i = 0; i < mapDocument.MapCount; i++)
                    {
                        //通过get_Map(i)方法逐个加载
                        axMapControl1.Map = mapDocument.get_Map(i);
                    }
                    axMapControl1.Refresh();
                }
                else
                {
                    mapDocument = null;
                }
            }
            catch(Exception e)
            {
                MessageBox.Show(e.ToString());
            }

        }

        /// <summary>
        /// 方法一:运用LoadMxFile方法的函数参数加载地图文档
        /// </summary>
        private void loadMapAccDoc1()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "打开地图文档";
            ofd.Filter = "map documents(*.mxd)|*.mxd";
            ofd.InitialDirectory = m_Path;
            //判断, 如果对话框结构不为OK, 退出函数体
            DialogResult DR = ofd.ShowDialog();
            if (DR != DialogResult.OK)
                return;
            string filePath = ofd.FileName;
            if (axMapControl1.CheckMxFile(filePath))
            {
                //设置axMapControl控制鼠标指针图标选项为沙漏光标
                axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerArrowHourglass;
                //三个参数(filePath——文件路径、0——地址名称或索引、Type.Missing——通过反射进行调用获取参数的默认值)
                axMapControl1.LoadMxFile(filePath, 0, Type.Missing);
                //定义axMapControl控制鼠标指针图标为默认箭头
                axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;
                axMapControl1.Extent = axMapControl1.FullExtent;
            }
            else
            {
                MessageBox.Show(filePath + "不是有效的地图文档");
            }
        }
        #endregion

谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!

01-14 12:13