介绍ArcGIS中各种数据的打开方法——mxd(地图文档)
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 pFileName = ofd.FileName; //filePath——地图文档的路径, ""——赋予默认密码 mapDocument.Open(pFileName, ""); 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二次开发,如果有不对的地方,请多多包涵!