zoukankan      html  css  js  c++  java
  • ArcEngine在个人地理数据库下创建要素类

    //例如,personalDBPath=@"E: empTestDB.mdb", featureClassName="newF"
    public void CreateFeatureClass(string personalDBPath, string featureClassName)
    {

    //创建地理坐标系对象
    ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
    ISpatialReference spatialReference = spatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(@"E: empSuzhou_1954_3_Degree_GK_CM_120E.prj");//.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

    ESRI.ArcGIS.Geodatabase.IGeometryDef geoDef = new ESRI.ArcGIS.Geodatabase.GeometryDefClass();
    ESRI.ArcGIS.Geodatabase.IGeometryDefEdit geoEdit = (ESRI.ArcGIS.Geodatabase.IGeometryDefEdit)geoDef;
    geoEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon;
    geoEdit.SpatialReference_2 = spatialReference;

    //字段集.
    ESRI.ArcGIS.Geodatabase.IFields fields = new ESRI.ArcGIS.Geodatabase.FieldsClass();
    ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit = (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields;

    //逐一添加字段.

    ESRI.ArcGIS.Geodatabase.IField field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    ESRI.ArcGIS.Geodatabase.IFieldEdit fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;
    fieldEdit.Name_2 = "SHAPE";
    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry;
    fieldEdit.GeometryDef_2 = geoDef;
    fieldsEdit.AddField(field);

    field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;
    fieldEdit.Name_2 = "WKT";
    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
    fieldsEdit.AddField(field);

    field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;
    fieldEdit.Name_2 = "SLM10";
    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
    fieldsEdit.AddField(field);

    field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;
    fieldEdit.Name_2 = "SLM20";
    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
    fieldsEdit.AddField(field);

    field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;
    fieldEdit.Name_2 = "SLM40";
    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
    fieldsEdit.AddField(field);

    //通过已有工作空间创建.
    ESRI.ArcGIS.Geodatabase.IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory();
    ESRI.ArcGIS.Geodatabase.IFeatureWorkspace fws = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)wsf.OpenFromFile(personalDBPath, 0);
    ESRI.ArcGIS.Geodatabase.IFeatureClass fc = fws.CreateFeatureClass(featureClassName, fields, null, null, ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple, "SHAPE", null);
    }

  • 相关阅读:
    力扣(LeetCode)67. 二进制求和
    力扣(LeetCode) 66. 加一
    力扣(LeetCode)58. 最后一个单词的长度
    力扣(LeetCode)1009. 十进制整数的反码
    力扣(LeetCode) 20. 有效的括号
    力扣(LeetCode)1016. 子串能表示从 1 到 N 数字的二进制串
    数据库索引
    OSI 七层和五层
    ST算法
    F
  • 原文地址:https://www.cnblogs.com/khfang/p/7685285.html
Copyright © 2011-2022 走看看