创建shp文件

  // 创建shp (专三个参数,输出路径,shp文件名称,shp文件类型)
        public static void CreateShpFeatureFiles( string shpfolder, string shpname, esriGeometryType pesriGeometryType)
        {
            IWorkspaceFactory pWorkSpaceFac = new ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace pFeatureWorkSpace = pWorkSpaceFac.OpenFromFile(shpfolder, 0) as IFeatureWorkspace;

            如果 shpname已存在,提示是否删除
            //IFeatureClass pFCChecker = pFeatureWorkSpace.OpenFeatureClass(shpname);
            //if (pFCChecker != null)
            //{
            //    if (MessageBox.Show("此文件已经存在,确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
            //    {
            //        IDataset pds = pFCChecker as IDataset;
            //        pds.Delete();
            //    }
            //    else
            //    {
            //        return;
            //    }   
            //}

            //创建字段集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 = pesriGeometryType;
            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, "");
        }
        private void buttonOK_Click(object sender, EventArgs e)
        {
            //创建一个新的shapfile工作空间


            esriGeometryType pesriGeometryType;
            switch(comboBoxType.SelectedIndex)
            {
                case 0:
                    pesriGeometryType = esriGeometryType.esriGeometryPoint;
                    CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
                    break;
                case 1:
                    pesriGeometryType = esriGeometryType.esriGeometryPolyline;
                    CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
                    break;
                case 2:
                    pesriGeometryType = esriGeometryType.esriGeometryPolygon;
                    CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
                    break;
                case 3:
                    pesriGeometryType = esriGeometryType.esriGeometryMultipoint;
                    CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
                    break;
                case 4:
                    pesriGeometryType = esriGeometryType.esriGeometryMultiPatch;
                    CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
                    break;
           }
           
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值