如何创建一个要素数据类 IField,IFieldEdit,IFields,IFieldsEditI,GeometryDef,IGeometryDefEdit接口

如何创建一个要素数据类
创建要素类用到了IFeatureWorkspace.CreateFeatureClass方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口.
IField,IFieldEdit,IFields,IFieldsEditI,GeometryDef,IGeometryDefEdit接口
字段对应表中的一列,一个要素类必须有至少2个字段,而多个字段的集合就构成了字段集,在要素类中,有一个特殊的字段,描述了空间对象,我们称之为几何字段,其中GeometryDef是用来设计几何字段的。这个几何字段定义了要素类的类型,比如说我们要在Catalog创建一个点要素类,那么我们必须指定他的类型为Point。

而上面这6个接口,其实是三类,以Edit结尾的接口是可写的,也就是说对字段,字段集合,以及几何字段的编辑都是通过后者完成的。空间数据的一个重要属性就是参考系,参考系也是在GeometryDef中定义的。
注意 在NET中,会遇到以“_2”结尾的属性,这些属性是可写的。

IGeometryDefEdit Interface接口

Members

 Description
Read-only property AvgNumPoints The estimated average number of points per feature.
Write-only property AvgNumPoints The estimated average number of points per feature.
Read-only property GeometryType The enumerated geometry type.
Write-only property GeometryType The geometry type.
Read-only property GridCount The number of spatial index grids.
Write-only property GridCount The number of spatial index grids.
Read-only property GridSize The size of a spatial index grid.
Write-only property GridSize The size of a spatial index grid.
Read-only property HasM Indicates if the feature class has measure (M) values.
Write-only property HasM Indicates if the feature class will support M values.
Write-only property HasZ Indicates if the feature class will support Z values.
Read-only property HasZ Indicates if the featureClass has Z values.
Read-only property SpatialReference The spatial reference for the dataset.
Write-only property SpatialReference The spatial reference of the dataset.

 

Inherited Interfaces

InterfacesDescription
IGeometryDef Provides access to members that return information about the geometry definition.
 

 

Classes that implement IGeometryDefEdit

 

ClassesDescription
GeometryDef ESRI Geometry Definition object.

 

 //定义一个几何字段,类型为点类型
             ISpatialReference pSpatialReference = axMapControl1.ActiveView.FocusMap.SpatialReference; //空间参考系
 
             IGeometryDefEdit pGeoDef = new GeometryDefClass();
             IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
             pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
             pGeoDefEdit.SpatialReference_2 = pSpatialReference;
 
             //定义一个字段集合对象
             IFields pFields = new FieldsClass();
             IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;
 
             //定义单个的字段
             IField pField = new FieldClass();
             IFieldEdit pFieldEdit = (IFieldEdit)pField;
 
             pFieldEdit.Name_2 = "SHAPE";
             pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
             pFieldsEdit.AddField(pField);
             pFieldEdit.GeometryDef_2 = pGeoDef;
 
             //定义单个的字段,并添加到字段集合中
             pField = new FieldClass();
             pFieldEdit = (IFieldEdit)pField;
             pFieldEdit.Name_2 = "STCD";
             pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
             pFieldsEdit.AddField(pField);
 
             //定义单个的字段,并添加到字段集合中
             pField = new FieldClass();
             pFieldEdit = (IFieldEdit)pField;
             pFieldEdit.Name_2 = "SLM10";
             pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
             pFieldsEdit.AddField(pField);
             //定义单个的字段,并添加到字段集合中
             pField = new FieldClass();
             pFieldEdit = (IFieldEdit)pField;
             pFieldEdit.Name_2 = "SLM20";
             pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
             pFieldsEdit.AddField(pField);
             //定义单个的字段,并添加到字段集合中
             pField = new FieldClass();
             pFieldEdit = (IFieldEdit)pField;
             pFieldEdit.Name_2 = "SLM40";
             pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
             pFieldsEdit.AddField(pField);
 
             IWorkspaceFactory pFtWsFct = new AccessWorkspaceFactory();
 
             IFeatureWorkspace pWs = pFtWsFct.OpenFromFile(@"E:\arcgis\Engine\s.mdb", 0) as
IFeatureWorkspace;
 
 
             IFeatureClass pFtClass = pWs.CreateFeatureClass("Test", pFields, null, null,
esriFeatureType.esriFTSimple, "SHAPE", null)

 

posted @ 2013-08-07 11:05  秋水惜朝  阅读(3414)  评论(0编辑  收藏  举报