首页 > 代码库 > ArcGIS Engine开发之地图文档保存

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);            }        }

 

ArcGIS Engine开发之地图文档保存