IFieldEdit Example
This function creates a new feature class in a supplied feature dataset by building all of the fields from scratch.
Note:IFeatureClassDescription (or IObjectClassDescription if the table was being created at the workspace level) could be used to get the required fields, and they are used to get the InstanceClassID and ExtensionClassID.
public IFeatureClass IFieldEdit_Example(IFeatureDataset featureDataset, IDomain domain, String nameOfFeatureClass) {//create new Fields collection IFields fields = new FieldsClass(); IFieldsEdit fieldsEdit = (IFieldsEdit)fields; fieldsEdit.FieldCount_2 = 4; //create FID Field IField fieldUserDefined = new FieldClass(); IFieldEdit fieldEdit = (IFieldEdit)fieldUserDefined; fieldEdit.AliasName_2 = "FID"; fieldEdit.Name_2 = "SE_ROW_ID"; fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; fieldsEdit.set_Field(0,fieldUserDefined); //create Shape Field fieldUserDefined = new FieldClass(); fieldEdit = (IFieldEdit)fieldUserDefined; //set up Geometry Definition IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; geometryDefEdit.AvgNumPoints_2 = 5; geometryDefEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline; geometryDefEdit.GridCount_2 = 1; geometryDefEdit.set_GridSize(0, 0); //Allow ArcGIS to determine valid grid values based on the features. geometryDefEdit.HasM_2 = false; geometryDefEdit.HasZ_2 = false; //note that the spatial ReferenceEquals will be inherited from the feature dataset. fieldEdit.Name_2 = "SHAPE"; fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; fieldEdit.GeometryDef_2 = geometryDef; fieldEdit.IsNullable_2 = true; fieldEdit.Required_2 = true; fieldsEdit.set_Field(1, fieldUserDefined); //create small integer field with supplied domain fieldUserDefined = new FieldClass(); fieldEdit = (IFieldEdit)fieldUserDefined; fieldEdit.DefaultValue_2 = 6; if (domain != null) { fieldEdit.Domain_2 = domain; } fieldEdit.DomainFixed_2 = true; fieldEdit.Editable_2 = true; fieldEdit.IsNullable_2 = false; fieldEdit.Name_2 = "population"; fieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger; fieldsEdit.set_Field(2, fieldUserDefined); //create double field fieldEdit.AliasName_2 = "average income for 1999-2000"; fieldEdit.Editable_2 = true; fieldEdit.IsNullable_2 = false; fieldEdit.Name_2 = "average_income"; fieldEdit.Precision_2 = 2; fieldEdit.Scale_2 = 5; fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; //Note: Lenght is only required for esriFieldType.esriFieldTypeString //fieldEdit.Length_2 = 50; fieldsEdit.set_Field(3, fieldUserDefined); Console.WriteLine("IFieldsEdit has a field count of {0}", fieldsEdit.FieldCount); IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass(); IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc; return featureDataset.CreateFeatureClass(nameOfFeatureClass, fields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, "SHAPE", ""); }
浙公网安备 33010602011771号