加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2016-07-14 14:55:33)
标签:

arcengine

csharp

arcsde

分类: ArcEngine
方法一:使用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("转换成功!");

        }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有