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
版权声明:本博原创文章可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。如需转载,请在转载时声明作者、保留出处。本人保留对本文的一切权利。
作者:AllenRobin Blog:http://gisrsman.cnblogs.com

浙公网安备 33010602011771号