public IFeatureClass IFeatureDataset__CreateFeatureClass(IFeatureDataset featureDataset, String nameOfFeatureClass)
{

// This function creates a new feature class in a supplied feature dataset by building all of the
// fields from scratch. IFeatureClassDescription (or IObjectClassDescription if the table is 
  // created at the workspace level) can be used to get the required fields and are used to 
  // get the InstanceClassID and ExtensionClassID.
// Create new fields collection with the number of fields you plan to add. Must add at least two fields
// for a feature class: Object ID and Shape field.
IFields fields = new FieldsClass();
IFieldsEdit fieldsEdit = (IFieldsEdit)fields;
fieldsEdit.FieldCount_2 = 3;

// Create Object ID field.
IField fieldUserDefined = new Field();

IFieldEdit fieldEdit = (IFieldEdit)fieldUserDefined;
fieldEdit.Name_2 = "OBJECTID";
fieldEdit.AliasName_2 = "OBJECT ID";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;
fieldsEdit.set_Field(0, fieldUserDefined);

// Create Shape field.
fieldUserDefined = new Field();
fieldEdit = (IFieldEdit)fieldUserDefined;

// Set up geometry definition for the Shape field.
// You do not have to set the spatial reference, as it is inherited from the feature dataset.
IGeometryDef geometryDef = new GeometryDefClass();
IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
geometryDefEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline;

// By setting the grid size to 0, you are allowing ArcGIS to determine the appropriate grid sizes for the feature class. 
// If in a personal geodatabase, the grid size is 1,000. If in a file or ArcSDE geodatabase, the grid size
// is based on the initial loading or inserting of features.
geometryDefEdit.GridCount_2 = 1;
geometryDefEdit.set_GridSize(0, 0);
geometryDefEdit.HasM_2 = false;
geometryDefEdit.HasZ_2 = false;

// Set standard field properties.
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 a field of type double to hold some information for the features.
fieldUserDefined = new Field();

 fieldEdit = (IFieldEdit)fieldUserDefined;
fieldEdit.Name_2 = "Avg_income";
fieldEdit.AliasName_2 = "Average income for 1999-2000";
fieldEdit.Editable_2 = true;
fieldEdit.IsNullable_2 = false;
fieldEdit.Precision_2 = 2;
fieldEdit.Scale_2 = 5;
fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
fieldsEdit.set_Field(2, fieldUserDefined);

// Create a feature class description object to use for specifying the CLSID and EXTCLSID.
IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass();
IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc;

return featureDataset.CreateFeatureClass(nameOfFeatureClass, fields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, "SHAPE", "");

}

posted on 2011-04-24 14:07  醉意人间  阅读(958)  评论(0编辑  收藏  举报