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();
}
///
/// 方法二:运用MapDocument对象中的Open方法的函数加载mxd文档
///
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());
}
}
///
/// 方法一:运用LoadMxFile方法的函数参数加载地图文档
///
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二次开发,如果有不对的地方,请多多包涵!