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("转换成功!");
 
        }

http://blog.sina.com.cn/s/blog_9d0a434f0102wnnv.html

posted @ 2017-07-13 11:15  AllenRobin  阅读(417)  评论(0)    收藏  举报