1 public static IFeatureClass CreateMemoryFeatureClass( 2 ISpatialReference spatialReference, esriGeometryType geometryType, string name = "Temp") 3 { 4 // 创建内存工作空间 5 IWorkspaceFactory pWSF = new InMemoryWorkspaceFactoryClass(); 6 IWorkspaceName pWSName = pWSF.Create("", "Temp", null, 0); 7 IName pName = (IName)pWSName; 8 IWorkspace memoryWS = (IWorkspace)pName.Open(); 9 10 IField field = new FieldClass(); 11 IFields fields = new FieldsClass(); 12 IFieldsEdit fieldsEdit = fields as IFieldsEdit; 13 IFieldEdit fieldEdit = field as IFieldEdit; 14 15 16 fieldEdit.Name_2 = "OBJECTID"; 17 fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; 18 fieldEdit.IsNullable_2 = false; 19 fieldEdit.Required_2 = false; 20 fieldsEdit.AddField(field); 21 22 field = new FieldClass(); 23 fieldEdit = field as IFieldEdit; 24 IGeometryDef geoDef = new GeometryDefClass(); 25 IGeometryDefEdit geoDefEdit = (IGeometryDefEdit)geoDef; 26 geoDefEdit.AvgNumPoints_2 = 5; 27 geoDefEdit.GeometryType_2 = geometryType; 28 geoDefEdit.GridCount_2 = 1; 29 geoDefEdit.HasM_2 = false; 30 geoDefEdit.HasZ_2 = false; 31 geoDefEdit.SpatialReference_2 = spatialReference; 32 fieldEdit.Name_2 = "SHAPE"; 33 fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; 34 fieldEdit.GeometryDef_2 = geoDef; 35 fieldEdit.IsNullable_2 = true; 36 fieldEdit.Required_2 = true; 37 fieldsEdit.AddField(field); 38 39 field = new FieldClass(); 40 fieldEdit = field as IFieldEdit; 41 fieldEdit.Name_2 = "Code"; 42 fieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger; 43 fieldEdit.IsNullable_2 = true; 44 fieldsEdit.AddField(field); 45 46 //创建要素类 47 IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)memoryWS; 48 IFeatureClass featureClass = featureWorkspace.CreateFeatureClass( 49 name, fields, null, null, esriFeatureType.esriFTSimple, "SHAPE", ""); 50 51 return featureClass; 52 }