1、问题描述:在AE开发中,新增一个空的shpfile文件的时候,报错,如下图:
2、原因分析:产生此问题的原因是未设置默认字段的默认参数,特别是未设置IGeometryDef 参数。
3、解决方案:在新建默认字段时,设置IGeometryDef的参数。
4、示例代码:
public static IFeatureClass CreateFeatureClass(IFeatureWorkspace FeatureWorkspace, string LayerName, esriFeatureType featureType, esriGeometryType GeometryType, ISpatialReference SpatialReference){IFields fields = new FieldsClass();IFieldsEdit edit = fields as IFieldsEdit;IField field = new FieldClass();IFieldEdit edit2 = field as IFieldEdit;edit2.Name_2 = "FID"; // set_Name("FID");edit2.AliasName_2 = "FID";// set_AliasName("FID");edit2.Type_2 = esriFieldType.esriFieldTypeOID; // set_Type(6);edit.AddField(field);IGeometryDef def = new GeometryDefClass();IGeometryDefEdit edit3 = def as IGeometryDefEdit;edit3.GeometryType_2 = GeometryType; //set_GeometryType(GeometryType);edit3.GridCount_2 = 1; // set_GridCount(1);edit3.set_GridSize(0, 1000.0);edit3.AvgNumPoints_2 = 2; // set_AvgNumPoints(2);edit3.HasM_2 = false; // set_HasM(false);edit3.HasZ_2 = false; // set_HasZ(false);edit3.SpatialReference_2 = SpatialReference;// set_SpatialReference(this.ShapeSpatialReference);IField field2 = new FieldClass();IFieldEdit edit4 = field2 as IFieldEdit;edit4.Name_2 = "SHAPE"; // set_Name("SHAPE");edit4.AliasName_2 = "SHAPE"; // set_AliasName("SHAPE");edit4.Type_2 = esriFieldType.esriFieldTypeGeometry; // set_Type(7);edit4.GeometryDef_2 = def;// set_GeometryDef(def);edit.AddField(field2);string str = field2.Name;// get_Name();UID uid = null;UID uid2 = null;if (featureType == esriFeatureType.esriFTSimple) // 1){IObjectClassDescription description = new FeatureClassDescriptionClass();uid = description.InstanceCLSID; // get_InstanceCLSID();uid2 = description.ClassExtensionCLSID; // get_ClassExtensionCLSID();}return FeatureWorkspace.CreateFeatureClass(LayerName, fields, uid, uid2, featureType, str, null);}