• 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);
    }

  • 相关阅读:
    OP和DBA相关的一些有用资源
    对于有大量重复数据的表添加唯一索引
    Innodb_io_capacity 对于IO稳定性的一些研究
    Memcache Slab Eviction 功能测试
    MMM的一个Bug
    阿里嘉年华ADC Workshop PPT分享
    Java中的死锁问题
    Java中的线程同步
    Java中终止正在运行线程
    Java中的线程的优先级
  • 原文地址:https://www.cnblogs.com/khfang/p/7685285.html
Copyright © 2020-2023  润新知