Fork me on GitHub

ArcGIS Engine 地图操作基础——地图文档保存

在对地图文档进行修改后,经常需要对其进行保存。地图文档的保存分为直接保存和另存为两种。这里的保存仅仅只是修改地图文档文件记录的信息,并不会对数据进行更改。保存地图文档的一般格式是 *.mxd 格式。

地图文档保存

实例程序实现思路

  • (1) 地图文档的保存主要使用 IMapDocument 接口。首先使用 IMxdContents 接口读取已打开地图文档的内容,并使之替换 IMapDocument 接口的实例对象。
  • (2) 保存时使用 IMapDocument 接口的 Save 方法,函数原型为 public void Save(bool bUseRelativePaths, bool bCreateThumnbail)
参数 描述
bUseRelativePaths 是否保存为相对路径(区别于绝对路径)
bCreateThumnbail 表示保存的地图在 ArcCatalog 中查看时是否显示缩略图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//保存地图
private void SaveMap_Click(object sender, EventArgs e)
{
try
{
string sMxdFileName = mainMapControl.DocumentFilename;
IMapDocument pMapDocument = new MapDocumentClass();
if (sMxdFileName!=null && mainMapControl.CheckMxFile(sMxdFileName))
{
if (pMapDocument.get_IsReadOnly(sMxdFileName))
{
MessageBox.Show("本地图文档是只读的,不能保存!");
pMapDocument.Close();
return;
}
}
else
{
SaveFileDialog pSaveFileDialog = new SaveFileDialog();
pSaveFileDialog.Title = "请选择保存路径";
pSaveFileDialog.OverwritePrompt = true;
pSaveFileDialog.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt";
pSaveFileDialog.RestoreDirectory = true;
if (pSaveFileDialog.ShowDialog() == DialogResult.OK)
{
sMxdFileName = pSaveFileDialog.FileName;
}
else
{
return;
}
}

pMapDocument.New(sMxdFileName);
pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);
pMapDocument.Save(pMapDocument.UsesRelativePaths, true);
pMapDocument.Close();
MessageBox.Show("保存地图文档成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

地图文档另存为

实例程序实现思路

  • (1) 地图文档的另存为与保存的方法类似,保存前需判断保存的路径里是否存在相同的文件;
  • (2) 另存为需要用 IMapDocument 接口的 New 方法创建新的路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//地图另存为
private void btnSaveAsMap_Click(object sender, EventArgs e)
{
try
{
SaveFileDialog pSaveFileDialog = new SaveFileDialog();
pSaveFileDialog.Title = "另存为";
pSaveFileDialog.OverwritePrompt = true;
pSaveFileDialog.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt";
pSaveFileDialog.RestoreDirectory = true;
if (pSaveFileDialog.ShowDialog() == DialogResult.OK)
{
string sFilePath = pSaveFileDialog.FileName;

IMapDocument pMapDocument = new MapDocumentClass();
pMapDocument.New(sFilePath);
pMapDocument.ReplaceContents(mainMapControl.Map as IMxdContents);
pMapDocument.Save(true, true);
pMapDocument.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//也可以使用 ArcGIS Engine 中封装好的类库资源 ControlsSaveAsDocCommandClass 实现地图文档的另存为:
//ICommand command = new ControlsSaveAsDocCommandClass();
//command.OnCreate(mainMapControl.Object);
//command.OnClick();
}
--- The End    Thanks For Your Reading ---

本文标题:ArcGIS Engine 地图操作基础——地图文档保存

文章作者:RenKai

发布时间:2017年06月13日 - 21:06

最后更新:2017年08月24日 - 13:08

原始链接:http://yoursite.com/ArcGIS-Engine-map-basic-save-documents.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。