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