FeatureLayer到本地shapefile文件

0
分享 2012-08-07
今天给大家介绍一段代码,可以将程序中的FeatureLayer转到本地shapefile文件,方便数据输出使用。
using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geodatabase;
//sFileName:shapefile保存的路径及名称
//pFC:要输出FeatureLayer的FeatureClass属性
publicstaticvoid OperateConvertToShape(string sFileName, IFeatureClass pFC)
{
try
{
string str = sFileName;
string str2 = str.Substring(str.LastIndexOf(@”")+ 1);
string str3 = str.Substring(0, (str.Length – str2.Length) –1);
IPropertySet set = newPropertySetClass();
set.SetProperty(“DATABASE”, str3);
IWorkspaceName pWorkSpaceName = newWorkspaceNameClass();
pWorkSpaceName.ConnectionProperties = set;
pWorkSpaceName.WorkspaceFactoryProgID = “esriDataSourcesFile.shapefileWorkspaceFactory.1″;
IFeatureClassName pFeatureClassName = newFeatureClassNameClass();
IDatasetName pDatasetName = pFeatureClassName asIDatasetName;
pDatasetName.Name = str2;
pDatasetName.WorkspaceName = pWorkSpaceName;
IDataset dataset = pFC asIDataset;
IWorkspaceName sWorkSpaceName = newWorkspaceNameClass();
sWorkSpaceName.ConnectionProperties =dataset.Workspace.ConnectionProperties;
IWorkspaceFactory pFWorkFactory=dataset.Workspace.WorkspaceFactory;
if (pFWorkFactory.GetType().Name.ToUpper().IndexOf(“ACCESS”)>-1)
{
sWorkSpaceName.WorkspaceFactoryProgID = “esriDataSourcesGDB.AccessWorkspaceFactory.1″;
}
elseif(pFWorkFactory.GetType().Name.ToUpper().IndexOf(“FILEGDB”) > -1)
{
sWorkSpaceName.WorkspaceFactoryProgID = “esriDataSourcesGDB.FileGDBWorkspaceFactory.1″;
}
elseif(pFWorkFactory.GetType().Name.ToUpper().IndexOf(“SDE”) > -1)
{
sWorkSpaceName.WorkspaceFactoryProgID = “esriDataSourcesGDB.SdeWorkspaceFactory.1″;
}
IFeatureClassName sFeatureClassName = newFeatureClassNameClass();
IDatasetName sDatasetName = sFeatureClassName asIDatasetName;
sDatasetName.Name = dataset.Name;
sDatasetName.WorkspaceName = sWorkSpaceName;
newFeatureDataConverterClass().ConvertFeatureClass(sFeatureClassName,null, null, pFeatureClassName, null, null, “”, 0x3e8, 0);
MessageBox.Show(“shape文件输出完毕!“, “信息“, MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch (Exception exception)
{
MessageBox.Show(exception.Message, “提示“, MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}

文章来源:http://blog.csdn.net/sydbc/article/details/17684445

0 个评论

要回复文章请先登录注册