码迷,mamicode.com
首页 > 其他好文 > 详细

ArcGIS Engine开发之地图文档保存

时间:2016-09-18 13:17:58      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

在对地图文档进行修改后,经常需要对其进行保存。地图文档的保存有直接保存和另存为两种方式。这里的地图文档的修改指的是修改地图文档文件记录信息,不是对空间数据的编辑。

1.地图文档保存

具体实现的思路:

1)地图文档的保存主要使用IMapDocument接口,首先使用IMxdContents接口读取已打开的地图文档的内容,并使之替换IMapDocument接口的实例对象。

2)保存时使用IMapDocument接口的Save方法,函数原型为 public void Save (bool)bUserelativePaths,bool bCreateThumbail).

Save方法的参数说明
参数 描述
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开发之地图文档保存

标签:

原文地址:http://www.cnblogs.com/dongteng/p/5880961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!