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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM