FeatureLayer到本地shapefile文件
分享
今天给大家介绍一段代码,可以将程序中的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
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 个评论
相关问题
- 有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
- 两个栅格文件分辨率一致,但像元位置不一致,如何处理?
- shape文件中的点符号如何去除,只保留标注
- 把shp多个文件整到一起的一个专门的软件,不是ARCGIS是其他的,
- 利用现有的瓦片生成tpk文件
- 请问ArcGIS API for javaScript4.3 版本怎么在本地部署呢?我按照官网的提示了部署了好几次,但是一直提示以下错误:
- 想问问add-in中如何获取arcmap已添加的Shape文件存放路径?
- arcmap中.shp文件如何转换为geojson文件
- arcmap发布很大的tif文件很卡的问题。。。。
- 我有一个县域图,还有不同ID的点数据文件,怎么知道每个县内包含哪些点呢
- 使用ArcGIS Server解析DEM等格式文件