1、前言
本文介绍ArcEngine
中如何将高版本的MXD
文档保存为低版本的MXD
文档,开发环境为ArcEngine 10.4
。
2、实现方法
主要通过IDocumentVersion
接口实现,代码如下:
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.esriSystem;
using System;
using System.Windows.Forms;
namespace App
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
// 加载文档
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Title = "选择MXD文档";
dialog.Filter = "MXD文档(*.mxd)|*.mxd";
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
if (axMapControl1.CheckMxFile(dialog.FileName))
{
IMapDocument pMapDocument = new MapDocument();
pMapDocument.Open(dialog.FileName, "");
axMapControl1.Map = pMapDocument.ActiveView.FocusMap;
axMapControl1.ActiveView.Refresh();
}
}
}
// 保存为低版本的ArcGIS文档
private void btnSaveAs_Click(object sender, EventArgs e)
{
SaveFileDialog dialog = new SaveFileDialog();
dialog.Title = "另存为";
dialog.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";
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
IMxdContents pMxdContents = axMapControl1.Map as IMxdContents;
IMapDocument pMapDocument = new MapDocument();
pMapDocument.New(dialog.FileName);
pMapDocument.ReplaceContents(pMxdContents);
// 切換版本
IDocumentVersion pDocumentVersion = pMapDocument as IDocumentVersion;
switch (dialog.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);
}
}
}
}