zoukankan      html  css  js  c++  java
  • AE CreateFeatureClass 创建shp. 删除shp. 向shp中添加要素

       /// <summary>
            /// 创建多边形shp
            /// </summary>
            /// <param name="pPolygon"></param>
            /// <param name="shpPath"></param>
            public static  void CreatePolygonFeatureClass(IPolygon pPolygon, string shpfolder,string shpname)
            {
                IWorkspaceFactory pWorkSpaceFac = new ShapefileWorkspaceFactoryClass();
                IFeatureWorkspace pFeatureWorkSpace = pWorkSpaceFac.OpenFromFile(shpfolder,0) as IFeatureWorkspace;
    
                //创建字段集2
                IFeatureClassDescription fcDescription = new FeatureClassDescriptionClass();
                IObjectClassDescription ocDescription = (IObjectClassDescription)fcDescription;//创建必要字段
                IFields fields = ocDescription.RequiredFields;
                int shapeFieldIndex = fields.FindField(fcDescription.ShapeFieldName); 
                IField field = fields.get_Field(shapeFieldIndex);
                IGeometryDef geometryDef = field.GeometryDef; 
                IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; 
              //geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
              //geometryDefEdit.SpatialReference_2 = spatialReference;
    
                geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                ISpatialReferenceFactory pSpatialRefFac = new SpatialReferenceEnvironmentClass();
                IProjectedCoordinateSystem pcsSys = pSpatialRefFac.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_39);
                geometryDefEdit.SpatialReference_2 = pcsSys;
    
                IFieldChecker fieldChecker = new FieldCheckerClass();
                IEnumFieldError enumFieldError = null;
                IFields validatedFields = null; //将传入字段 转成 validatedFields
                fieldChecker.ValidateWorkspace = (IWorkspace)pFeatureWorkSpace;
                fieldChecker.Validate(fields, out enumFieldError, out validatedFields);
    
                pFeatureWorkSpace.CreateFeatureClass(shpname, validatedFields, ocDescription.InstanceCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDescription.ShapeFieldName, "");
            }

     //删除shp

    //如果已存在,那么删除
                IFeatureClass pFCChecker = pFeatureWorkSpace.OpenFeatureClass(shpname);
                if (pFCChecker != null)
                {
                    IDataset pds = pFCChecker as IDataset;
                    pds.Delete();
                }

    //向shp中添加要素

            /// <summary>
            /// 向多边形shp中添加要素
            /// </summary>
            /// <param name="pPolygon">多边形</param>
            /// <param name="pFeatureClass">多边形shp</param>
            public static void AddFeatureToFeatureClass(IPolygon pPolygon,IFeatureClass pFeatureClass)
            {
                IFeature pFeature = pFeatureClass.CreateFeature();
                pFeature.Shape = pPolygon;
                pFeature.Store();                
            }

    //官方例子

      public void IFeatureClass_CreateFeature_Example(IFeatureClass featureClass)  
             {       
                 //Function is designed to work with polyline data     
               if (featureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline) { return; }
            //create a geometry for the features shape       
                 ESRI.ArcGIS.Geometry.IPolyline polyline = new ESRI.ArcGIS.Geometry.PolylineClass();    
                 ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.PointClass();       
                 point.X = 0; point.Y = 0;      
                 polyline.FromPoint = point;
                 point = new ESRI.ArcGIS.Geometry.PointClass();        
                 point.X = 10; point.Y = 10;        polyline.ToPoint = point;
                 IFeature feature = featureClass.CreateFeature();
            //Apply the constructed shape to the new features shape       
                 feature.Shape = polyline;
                 ISubtypes subtypes = (ISubtypes)featureClass;       
                 IRowSubtypes rowSubtypes = (IRowSubtypes)feature;    
                 if (subtypes.HasSubtype)// does the feature class have subtypes?        
                 {  rowSubtypes.SubtypeCode = 1; //in this example 1 represents the Primary Pipeline subtype       
                 }
            // initalize any default values that the feature has       
                     rowSubtypes.InitDefaultValues();
            //Commit the default values in the feature to the database       
                     feature.Store();
            //update the value on a string field that indicates who installed the feature.  
                     feature.set_Value(feature.Fields.FindField("InstalledBy"), "K Johnston");
            //Commit the updated values in the feature to the database     
                     feature.Store();   
                 }
  • 相关阅读:
    JAVA课程设计——飞机大战(团队)
    面向对象设计大作业
    OO之接口-DAO模式代码阅读及应用
    有理数类设计
    图总结
    树、二叉树、查找算法总结
    二叉排序树
    数据结构小结
    C语言文件
    小程序云开发:联表查询去重及排序的不严谨笨办法
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2494127.html
Copyright © 2011-2022 走看看