zoukankan      html  css  js  c++  java
  • ArcGIS Engine开发之地图文档保存

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

    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);
                }
            }
  • 相关阅读:
    (一)IOC 容器:【2】@ComponentScan 自动扫描组件&指定扫描规则
    (一)IOC 容器:【11】Aware 注入Spring底层组件
    (一)IOC 容器:【10】@Autowired 自动装配
    (一)IOC 容器:【3】@Scope 设置组件作用域
    (一)IOC 容器:【8】Bean组件的生命周期
    每日日报7月13日
    每日日报7月12日
    每日日报7月11日
    Prism中的WeakEventHandlerManager
    博客开通标记
  • 原文地址:https://www.cnblogs.com/dongteng/p/5880961.html
Copyright © 2011-2022 走看看