本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Good_liu_simalb/archive/2010/07/21/5752967.aspx
private void shpToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
if (DialogResult.OK == dlg.ShowDialog())
{
string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf('\\'));
if (!System.IO.Directory.Exists(file))
{
System.IO.Directory.CreateDirectory(file);
}
try
{
ILayer pLayer = axMapControl1.Map.get_Layer(0);
if (pLayer != null)
{
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
if (pFeatureLayer.Visible)
{
ExportFeature(pFeatureLayer.FeatureClass,dlg.FileName);
}
}
MessageBox.Show("导出成功");
}
catch
{
MessageBox.Show("导出失败!");
}
}
}
private void ExportShp()
{
SaveFileDialog dlg = new SaveFileDialog();
if (DialogResult.OK == dlg.ShowDialog())
{
string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf('\\'));
if (!System.IO.Directory.Exists(file))
{
System.IO.Directory.CreateDirectory(file);
}
try
{
ILayer pLayer = axMapControl1.Map.get_Layer(1);
if (pLayer != null)
{
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
if (pFeatureLayer.Visible)
{
ExportFeature(pFeatureLayer.FeatureClass, dlg.FileName);
}
}
MessageBox.Show("导出成功");
}
catch
{
MessageBox.Show("导出失败!");
}
}
}
public void ExportFeature(IFeatureClass pInFeatureClass,string pPath)
{
// create a new Access workspace factory
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
string parentPath=pPath.Substring(0, pPath.LastIndexOf('\\'));
string fileName= pPath.Substring(pPath.LastIndexOf('\\') + 1, pPath.Length - pPath.LastIndexOf('\\') - 1);
IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(parentPath,fileName, null, 0);
// Cast for IName
IName name = (IName)pWorkspaceName;
//Open a reference to the access workspace through the name object
IWorkspace pOutWorkspace = (IWorkspace)name.Open();
IDataset pInDataset = pInFeatureClass as IDataset;
IFeatureClassName pInFCName = pInDataset.FullName as IFeatureClassName;
IWorkspace pInWorkspace = pInDataset.Workspace;
IDataset pOutDataset = pOutWorkspace as IDataset;
IWorkspaceName pOutWorkspaceName = pOutDataset.FullName as IWorkspaceName;
IFeatureClassName pOutFCName = new FeatureClassNameClass();
IDatasetName pDatasetName = pOutFCName as IDatasetName;
pDatasetName.WorkspaceName = pOutWorkspaceName;
pDatasetName.Name = pInFeatureClass.AliasName;
IFieldChecker pFieldChecker = new FieldCheckerClass();
pFieldChecker.InputWorkspace = pInWorkspace;
pFieldChecker.ValidateWorkspace = pOutWorkspace;
IFields pFields = pInFeatureClass.Fields;
IFields pOutFields;
IEnumFieldError pEnumFieldError;
pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields);
IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();
pFeatureDataConverter.ConvertFeatureClass(pInFCName, null, null, pOutFCName, null, pOutFields, "", 100, 0);
}