Arcgis Engine之打开MXD文档
- 概述
- 方法一:
- 方法二:
概述
图层加载功能将用到MapControl 控件提供的LoadMxFile 方法。
该方法通过指定的*. Mxd文档路径直接获取
该方法第一个参数是文件路径,
第二个参数是MExd文档中地图的名称或索引,
第三个参数是密码,这里使用.
NET的Type. Missing字段通过反射进行调用获取参数的默认值。
加载Mxd文档可以通过MapControl 控件的LoadIxFile 方法,也可以通过MapDocument对象对地图文档中的地图逐个加载,MapDocument 提供了open 方法,用于打开一个地图文档文件。
该方法第一个参数为地图文档文件的路径,第二个参数为密码。
例如:
mapDocument = new ESRI.ArcGIS.Carto.MapDocumentClass();
mapDocument.Open(filePath,"");
一个Mxd文档中可以包含多个地图,loadMapDocument2方法,演示如何读取MXD文档中特定的地图,MapControl控件提供了ReadMxMaps方法,用于获取Mxd文档中地图数组,找到特定地图,再进行加载。
axMapControl1.LoadMxFile(filename);
IMapDocument iMapDoc = new MapDocument();//注意名词有无“I"
iMapDoc.Open(filename);
axMapControl1.Map = iMapDoc.ActiveView.FocusMap;//赋值
方法一:
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Map Document|*.mxd";//前面是一个提示,后面是过滤
dlg.Multiselect = false;
dlg.Title = "Open Map Document";
//调用对话框
if (dlg.ShowDialog() == DialogResult.OK)
//下面按钮有OK Conser(取消)
{
//判定是否选择文件
string filename = dlg.FileName;
if (filename == "")//判断是否选择文件为空
{
return;
}
//判定这个MXD文档是否为点文档
//axMapControl实际上可以是MapControl,在controls类库,
//作业:查看controls和MapControl类库
//LoadMxFile方法,检查是否为有效的地图文档
if (axMapControl1.CheckMxFile(filename))//如果地图文档有效,则加入
{
//方法一:axMapControl1.LoadMxFile(filename);
//方法二:
IMapDocument iMapDoc = new MapDocument();//注意名词有无“I"
iMapDoc.Open(filename);
//作业:查IMapDOcument类
//打开在了地图文档对象里面,
axMapControl1.Map = iMapDoc.ActiveView.FocusMap;//赋值
//地图文档里面显示地图文档对象里面的地图,此刻再运行
//要用一个地图文档对象,查看这个IMapDocument所有的能力,所有常用的接口,每一个接口都有什么样的方法
//AE开发用的都是接口,暴露的是接口,我们首先访问的是接口,后面我们都去用相关的属性和方法,MapDocument的Open方法
//不是控件打开接口,而是对象的接口的Open方法,Open到哪里呢?实际上,装载到内存中,Open到这个对象中了,我们的控件还没有展示这个内容
//加载到地图控件中,是利用Map属性进行赋值,内存中指向的处于激活状态的地图,在控件中打开
//第三个方法,是利用Icommand,用相关的control,谁去接受这个地图文档,接受是用iCom,
//OnClick事件包含打开实现的代码
//单独加载一个shapefile文件
//方法一:再加一个command,但是不美观
//方法二:加菜单,菜单最多加两层,不要再深了,再把button1的代码加过去
}
else
{
MessageBox.Show("无效的地图文档!");
}
axMapControl1.Refresh();//地图的刷新
//加注释,
//考试内容:给代码加注释
方法二:
https://blog.csdn.net/qq_37811638/article/details/82182029
substring()的作用就是截取父字符串的某一部分
public String substring(int beginIndex, int endIndex)
第一个参数int为开始的索引,对应String数字中的开始位置,
第二个参数是截止的索引位置,对应String中的结束位置
1、取得的字符串长度为:endIndex - beginIndex;
2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符
1)、substring(a,b)中的参数a其值可以从索引值0开始,
当a等于0时,则表示其从字符串的第一个字符开始算起,
也就是其子字符串是包含第一个字符的,当然,你也可以从后续的其他字符开始;
2)、substring(a,b)中的参数b,其值最大可以为 父字符串的长度,
但并不包含索引值为b的那个字符。