ArcGIS Engine开发之地图文档保存
Posted 东腾的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Engine开发之地图文档保存相关的知识,希望对你有一定的参考价值。
在对地图文档进行修改后,经常需要对其进行保存。地图文档的保存有直接保存和另存为两种方式。这里的地图文档的修改指的是修改地图文档文件记录信息,不是对空间数据的编辑。
1.地图文档保存
具体实现的思路:
1)地图文档的保存主要使用IMapDocument接口,首先使用IMxdContents接口读取已打开的地图文档的内容,并使之替换IMapDocument接口的实例对象。
2)保存时使用IMapDocument接口的Save方法,函数原型为 public void Save (bool)bUserelativePaths,bool bCreateThumbail).
参数 | 描述 |
bUseRelativepaths | 是否保存为相对路径(区别于决定路径) |
bCreatThumnbail | 表示保存的地图在ArcCatalog中查看时显示缩略图 |
代码:
private void btnSaveData_ItemClick(object sender, ItemClickEventArgs 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 System.Windows.Forms.SaveFileDialog(); pSaveFileDialog.Title = "请选择保存路径"; pSaveFileDialog.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt"; pSaveFileDialog.OverwritePrompt = true; 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); } }
2、地图文档另存为
实现的思路:
1)地图文档的另存为与保存的方法类似,保存前需要判断保存的路径是否存在相同的文件。
2)另存为需要使用IMapDocument接口的New方法创建新的路径。
代码:
private void btnSaveAs_ItemClick(object sender, ItemClickEventArgs e) { try { SaveFileDialog pSaveDialog = new System.Windows.Forms.SaveFileDialog(); pSaveDialog.Title = "另存为"; pSaveDialog.OverwritePrompt = true;//当相同的文件存在是提示错误 pSaveDialog.Filter = "ArcMap文档(*.mxd)|*.mxd|ArcMap模板(*.mxt)|*.mxt"; pSaveDialog.RestoreDirectory = true; if (pSaveDialog.ShowDialog() == DialogResult.OK) { string sFilePath = pSaveDialog.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开发之地图文档保存的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS Engine c#如何实现另存为Mxd地图文档的功能,,求代码