读大学的时候,班里有些同学装的是ArcGIS10.0,有些是10.1,我则是安装了10.2,这就导致我做的MXD文档别人用不了。下面来说一下ArcEngine中如何将高版本的MXD文档保存为低版本的MXD文档,我这里的用的是ArcEngine 10.4,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Output;
namespace WindowsFormsApplication1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
// 加载文档
private void btnLoad_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "选择MXD文档";
openFileDialog.Filter = "MXD文档(*.mxd)|*.mxd";
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
if (axMapControl1.CheckMxFile(openFileDialog.FileName))
{
IMapDocument pMapDocument = new MapDocument();
pMapDocument.Open(openFileDialog.FileName, "");
axMapControl1.Map = pMapDocument.ActiveView.FocusMap;
axMapControl1.ActiveView.Refresh();
}
}
}
// 保存为低版本的ArcGIS文档
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "另存为";
saveFileDialog.Filter = "ArcGIS 9.0文档(*.mxd)|*.mxd|ArcGIS 9.2文档(*.mxd)|*.mxd|ArcGIS 9.3文档(*.mxd)|*.mxd|" +
"ArcGIS 10.0文档(*.mxd)|*.mxd|ArcGIS 10.1文档(*.mxd)|*.mxd|ArcGIS 10.3文档(*.mxd)|*.mxd|ArcGIS 10.4文档(*.mxd)|*.mxd";
saveFileDialog.RestoreDirectory = true;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
IMxdContents pMxdContent = axMapControl1.Map as IMxdContents;
IMapDocument pMapDocument = new MapDocument();
pMapDocument.New(saveFileDialog.FileName);
pMapDocument.ReplaceContents(pMxdContent);
// 切換版本
IDocumentVersion pDocumentVersion = pMapDocument as IDocumentVersion;
switch (saveFileDialog.FilterIndex)
{
case 1:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion90;
}
break;
case 2:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion92;
}
break;
case 3:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion93;
}
break;
case 4:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion10;
}
break;
case 5:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion101;
}
break;
case 6:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion103;
}
break;
case 7:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion104;
}
break;
default:
{
pDocumentVersion.DocumentVersion = esriArcGISVersion.esriArcGISVersion104;
}
break;
}
// 保存
pMapDocument.Save(true, true);
}
}
}
}