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 }