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);}