• 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();   
                 }
  • 相关阅读:
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load 。。。。
    final,finally,finalize
    Java位运算总结:位运算用途广泛《转》
    Ext.Ajax.request同步请求
    xstream 别名的用法<转>
    MySQL 获得当前日期时间(以及时间的转换)
    关于用xercesImpl包解析xml文件遇中文报错问题
    kafka java示例
    varnish、squid、apache、nginx缓存的对比<转>
    websphere性能设置和日常维护
  • 原文地址:https://www.cnblogs.com/imihiroblog/p/2494127.html
Copyright © 2020-2023  润新知