c#+AE将要素类导出为shapefile文件(两种方法)
(2016-07-14 14:55:33)
标签:
arcenginecsharparcsde |
分类: 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("数据转换失败!");
}
}
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("转换成功!");
}
方法二:使用GP服务调用ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile工具

加载中…