c#+AE将要素类导出为shapefile文件(两种方法)

方法一:使用IFeatureDataConverter.ConvertFeatureClass方法

       private int ExportToShapefile(IFeatureClass pFeatureClass, IWorkspace outWorkspace)

        {

            try

            {

                //输入的要素类空间

                IDataset inDataSet = pFeatureClass as IDataset;

                IFeatureClassName inFCName = inDataSet.FullName as IFeatureClassName;

                IWorkspace inWorkspace = inDataSet.Workspace;

 

                //输出的shapfile文件的工作空间

                IDataset outDataSet = outWorkspace as IDataset;

                IWorkspaceName outWorkspaceName = outDataSet.FullName as IWorkspaceName;

                IFeatureClassName outFCName = new FeatureClassNameClass();

                IDatasetName dataSetName = outFCName as IDatasetName;

 

                dataSetName.WorkspaceName = outWorkspaceName;

                dataSetName.Name = pFeatureClass.AliasName.ToString();

                

                //检查字段的有效性

                IFieldChecker fieldChecker = new FieldCheckerClass();

                fieldChecker.InputWorkspace = inWorkspace;

                fieldChecker.ValidateWorkspace = outWorkspace;

 

                IFields fields = pFeatureClass.Fields;

                IFields outFields = null;

                IEnumFieldError enumFieldError = null;

                fieldChecker.Validate(fields, out enumFieldError, out outFields);

 

                //调用IFeatureDataConverter接口进行数据转换

                IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

                featureDataConverter.ConvertFeatureClass(inFCName, null, null, outFCName, null, outFields, “”, 100, 0);

 

            }

 

            catch

            {

                return 0;

            }

            return 1;

 

        }

 

        private void btnExportToShapefile2_Click(object sender, EventArgs e)

        {

            string sDBName = “TEST”;

            string SdeConnFilePath = @”E:\temp\DBConnettion\ConnectionTo” + sDBName + “.sde”;

            string destiShpPath = @”E:\temp\SHP”;

 

            //获取需要转换的要素类

            IWorkspace psdeWorkspace = db.OpenSdeWorkspace(sDBName, SdeConnFilePath);

            IFeatureWorkspace pFeaWs = psdeWorkspace as IFeatureWorkspace;

            IFeatureClass pFeatureClass = pFeaWs.OpenFeatureClass(“TEST.dbo.ZD”);

 

            //打开目标shapefile文件的路径

            IWorkspaceFactory pFact = new ShapefileWorkspaceFactoryClass();

            IWorkspace pOutWorkspace = pFact.OpenFromFile(destiShpPath, 0);

            if (ExportToShapefile(pFeatureClass, pOutWorkspace) == 1)

            {

                MessageBox.Show(“数据转换成功!”);

            }

            else

            {

                MessageBox.Show(“数据转换失败!”);

            }

        }

方法二:使用GP服务调用ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile工具

        private void btnSdeToShp_Click(object sender, EventArgs e)

        {

            string sDBName = “TEST”;

            string SdeConnFilePath = @”E:\temp\DBConnettion\ConnectionTo” + sDBName + “.sde”;

            string destiShpPath = @”E:\temp\SHP”;

 

            IWorkspace psdeWorkspace = db.OpenSdeWorkspace(sDBName, SdeConnFilePath);

            IFeatureWorkspace pFeaWs = psdeWorkspace as IFeatureWorkspace;

            IFeatureClass pFeatureClass = pFeaWs.OpenFeatureClass(“TEST.dbo.ZD”);

 

            Geoprocessor gp = new Geoprocessor();

            gp.OverwriteOutput = true;

 

            ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile covertToshp = new ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile();

 

            covertToshp.Input_Features = pFeatureClass;

            covertToshp.Output_Folder = destiShpPath;

 

            try

            {

                gp.Execute(covertToshp, null);

            }

            catch (Exception ex)

            {

                string str = “”;

                for (int i = 0; i < gp.MessageCount; i++)

                {

                    str += gp.GetMessage(i);

                    str += “\n”;

                }

                MessageBox.Show(str);

 

            }

            MessageBox.Show(“转换成功!”);

 

        }

转载自:https://blog.csdn.net/Sun_xiangyan/article/details/82257739

You may also like...