IFeatureDataConverter.ConvertFeatureClass 执行报错问题解决
博主最近在用IFeatureDataConverter.ConvertFeatureClass方法将shp文件转为gdb文件时,一直报错,报错内容提示:The table was not found。排查发现是因为要素集命名不规范导致(当时要素集名称设为了数字)
转化代码如下:
IFeatureClassName pSreFeaclsName= null;
IDatasetName pOutDatasetName = null;
IFeatureClassName pOutFeatureClassName = null;
IFeatureDataConverter convert = null;
IFields pFields = null;
IGeometryDef pGeometryDef = null;
IFieldChecker fieldChecker = null;
pSreFeaclsName= (sourceFeatureClass as IDataset).FullName as IFeatureClassName;
fieldChecker = new FieldCheckerClass();
IFields sourceFeatureClassFields = sourceFeatureClass.Fields;
fieldChecker.InputWorkspace = sourceWorkspace;
fieldChecker.ValidateWorkspace = targetWorkspace;
fieldChecker.Validate(sourceFeatureClassFields, out enumFieldError, out pFields);
int iShapeField = pFields.FindField(sourceFeatureClass.ShapeFieldName);
pGeometryDef = pFields.get_Field(iShapeField).GeometryDef;
pOutFeatureClassName = new FeatureClassNameClass();
pOutDatasetName = (IDatasetName)pOutFeatureClassName;
pOutDatasetName.WorkspaceName = (targetWorkspace as IDataset).FullName as IWorkspaceName;
pOutDatasetName.Name = targetLayerName; ///// 不能为数字
convert = new FeatureDataConverterClass();
convert.ConvertFeatureClass(pSreFeaclsName, null, null, pOutFeatureClassName, pGeometryDef, pFields, "", 1000, 0);