zoukankan      html  css  js  c++  java
  • 如何创建一个要素数据类 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:arcgisEngines.mdb", 0) as
    IFeatureWorkspace;
     
     
                 IFeatureClass pFtClass = pWs.CreateFeatureClass("Test", pFields, null, null,
    esriFeatureType.esriFTSimple, "SHAPE", null)

  • 相关阅读:
    sqlserver如何查询一个表的主键都是哪些表的外键
    sql server nullif的使用技巧,除数为零的处理技巧
    如何解决数据库中,数字+null=null
    sql server truncate table 删除表数据限制条件
    eclipse需要的环境变量就两个,一个是java_home指向JDK。另一个是Tomcat,自己去preference-sever下new一个
    解释Eclipse下Tomcat项目部署路径问题(.metadata.pluginsorg.eclipse.wst.server.core mp0wtpwebapps)
    mysql登录退出命令
    代码svn下载到本地后,关于数据库问题
    MySQL配置文件详解
    mysql查看存储过程show procedure status;
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3242685.html
Copyright © 2011-2022 走看看