/// <summary>
/// 导出要素类
/// </summary>
/// <param name="pSourceFeatureClass"></param>数据源
/// <param name="pQueryFilter"></param>筛选条件
/// <param name="filePath"></param>导出地址
/// <returns></returns>
private bool Export(IFeatureClass pSourceFeatureClass, IQueryFilter pQueryFilter, string filePath)
{
// 源数据工作空间(GDB)
IDataset pSourceDataset = pSourceFeatureClass as IDataset;
IFeatureClassName pSourceFeatureClassName = pSourceDataset.FullName as IFeatureClassName;
IWorkspace pSourceWorkspace = pSourceDataset.Workspace;
// 目标数据工作空间(SHP)
IWorkspaceFactory pTargetWorkspaceFactory = new ShapefileWorkspaceFactory();
IWorkspace pTargetWorkspace = pTargetWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0);
IDataset pTargetDataSet = pTargetWorkspace as IDataset;
// 设置目标数据属性
IWorkspaceName pTargetWorkspaceName = pTargetDataSet.FullName as IWorkspaceName;
IFeatureClassName pTargetFeatureClassName = new FeatureClassName() as IFeatureClassName;
IDatasetName pTargetDatasetName = pTargetFeatureClassName as IDatasetName;
pTargetDatasetName.WorkspaceName = pTargetWorkspaceName;
pTargetDatasetName.Name = System.IO.Path.GetFileName(filePath);
// 检查字段
IFieldChecker pFieldChecker = new FieldChecker();
pFieldChecker.InputWorkspace = pSourceWorkspace;
pFieldChecker.ValidateWorkspace = pTargetWorkspace;
// 字段转换
IFields pSourceFields = pSourceFeatureClass.Fields;
IFields pTargetFields = null;
IEnumFieldError pEnumFieldError = null;
pFieldChecker.Validate(pSourceFields, out pEnumFieldError, out pTargetFields);
// 数据转换
IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverter();
try
{
pFeatureDataConverter.ConvertFeatureClass(pSourceFeatureClassName, pQueryFilter, null, pTargetFeatureClassName, null, pTargetFields, "", 1000, 0);
return true;
}
catch
{
return false;
}
}