ArcGIS Engine開發之地圖文檔保存

ArcGIS Engine開發之地圖文檔保存

 來自:http://www.cnblogs.com/dongteng/p/5880961.html

在對地圖文檔進行修改後,常常須要對其進行保存。地圖文檔的保存有直接保存和另存爲兩種方式。這裏的地圖文檔的修改指的是修改地圖文檔文件記錄信息,不是對空間數據的編輯。html

1.地圖文檔保存

具體實現的思路:函數

1)地圖文檔的保存主要使用IMapDocument接口,首先使用IMxdContents接口讀取已打開的地圖文檔的內容,並使之替換IMapDocument接口的實例對象。post

2)保存時使用IMapDocument接口的Save方法,函數原型爲 public void Save (bool)bUserelativePaths,bool bCreateThumbail).url

Save方法的參數說明
參數 描述
bUseRelativepaths 是否保存爲相對路徑(區別於決定路徑)
bCreatThumnbail 表示保存的地圖在ArcCatalog中查看時顯示縮略圖

代碼:spa

複製代碼
 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);
            }
        
        }
複製代碼

二、地圖文檔另存爲

實現的思路:code

1)地圖文檔的另存爲與保存的方法相似,保存前須要判斷保存的路徑是否存在相同的文件。orm

2)另存爲須要使用IMapDocument接口的New方法建立新的路徑。htm

代碼:對象

複製代碼
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);
            }
        }
複製代碼
相關文章
相關標籤/搜索