首页 > 代码库 > ArcGIS Engine开发之地图文档保存
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开发之地图文档保存
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。