『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS Engine 10 开发手册(4-8)创建一个要素数据类

ArcGIS Engine 10 开发手册(4-8)创建一个要素数据类
创建要素类用到了 IFeatureWorkspace.CreateFeatureClass 方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口。

      创建要素类用到了 IFeatureWorkspace.CreateFeatureClass 方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口。


     IFieldIFieldEditIFieldsIFieldsEditIGeometryDef IGeometryDefEdit接口

      字段对应表中的一列,一个要素类必须有至少 2 个字段,而多个字段的集合就构成了字段集,在要素类中,有一个特殊的字段,描述了空间对象,我们称之为几何字段,其中 GeometryDef 是用来设计几何字段的。这个几何字段定义了要素类的类型, 比如说我们要在 Catalog 创建一个点要素类,那么我们必须指定

他的类型为 Point,如下图:

 

 

 

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

 

      **注意 .NET 中,会遇到以“_2”结尾的属性,这些属性是可写的。**

 

//定义一个几何字段,类型为点类型

 

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)

       运行结果

       结果如下:

 

      京ICP备08100627号-22 京公网安备 11010802030428号