arcgis shp文件合并

kingboyrang 2012-05-02 09:25:54
如何将多个shp文件合并,保存到一个shp文件中呢?

求解达人~~~
...全文
706 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingboyrang 2012-05-03
  • 打赏
  • 举报
回复
接近崩溃边缘~~~
kingboyrang 2012-05-02
  • 打赏
  • 举报
回复
/// <summary>
/// dxf轉換shp
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
//shp文件空间的数据集以及空间名
IDataset shpDataset = (IDataset)outWorkspace;

if (shpDataset == null) { MessageBox.Show("為空"); return; }
IWorkspaceName pShpWorkspaceName = (IWorkspaceName)shpDataset.FullName;
//CAD文件的空间数据集的遍历
IWorkspaceFactory pCADWorkSpaceFactory = new CadWorkspaceFactoryClass();
IFeatureWorkspace pCADFeatureWorkSpace = (IFeatureWorkspace)pCADWorkSpaceFactory.OpenFromFile(filePath, 0);
IFeatureDataset pCADFeatureDataset = pCADFeatureWorkSpace.OpenFeatureDataset(strFile);
IFeatureClassContainer pFeatureClassContainer = pCADFeatureDataset as IFeatureClassContainer;
IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes;
IFeatureClass pFeatureClass = pEnumFeatureClass.Next();
while (pFeatureClass != null)
{
IDataset cadDataset = (IDataset)pFeatureClass;
IFeatureClassName cadFeatureClassName = (IFeatureClassName)cadDataset.FullName;
IFeatureClassName shpFeatureClassName = new FeatureClassNameClass();
IDatasetName shpDatasetName = (IDatasetName)shpFeatureClassName;
string sname = pFeatureClass.FeatureDataset.Name;
shpDatasetName.Name = sname.Replace(".dxf", "_") + pFeatureClass.AliasName;
shpDatasetName.WorkspaceName = pShpWorkspaceName;
IFieldChecker pFieldChecker = new FieldCheckerClass();
IFields inFields = pFeatureClass.Fields;
IFields outFields = null;
IEnumFieldError pEnumFieldError = null;
pFieldChecker.InputWorkspace = (IWorkspace)pCADFeatureWorkSpace;
pFieldChecker.ValidateWorkspace = outWorkspace;
pFieldChecker.Validate(inFields, out pEnumFieldError, out outFields);

IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();
pFeatureDataConverter.ConvertFeatureClass(cadFeatureClassName, null, null, shpFeatureClassName, null, outFields, "", 100, 0);

pFeatureClass = pEnumFeatureClass.Next();
}
DialogResult result = MessageBox.Show("添加到当前地图?", "添加到当前地图?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
ESRI.ArcGIS.Controls.AxMapControl m_mapControl = new ESRI.ArcGIS.Controls.AxMapControl();
m_mapControl.CreateControl();

string[] filepathname = Directory.GetFiles(outShpPath, "*.shp");
IFeatureWorkspace tempFeatureWorkspace = outWorkspace as IFeatureWorkspace;
for (int i = 0; i < filepathname.Length; i++)
{
string filename = System.IO.Path.GetFileName(filepathname[i]);
// MessageBox.Show(filename);
// return;
IFeatureClass m_pFeatureClass = tempFeatureWorkspace.OpenFeatureClass(filename);
IDataset m_pDataset = m_pFeatureClass as IDataset;
IFeatureLayer m_pFeatureLayer = null;
m_pFeatureLayer = new FeatureLayerClass();


m_pFeatureLayer.FeatureClass = m_pFeatureClass;
m_pFeatureLayer.Name = m_pDataset.Name;
//pFeatureLayer.Name = pFeatureClass.AliasName; //这句代码也与上句一个效果
ILayer pLayer = m_pFeatureLayer as ILayer;
m_mapControl.Map.AddLayer(pLayer);
// if (this.pMapControl!=null)
// this.pMapControl.Map.AddLayer(pLayer);

}
m_mapControl.ActiveView.Refresh();

}

MessageBox.Show("转换成功!");
}
求解达人改装一下这个方法,把dxf文件一个shp文件,现在的问题是会生成多个shp文件~~
kingboyrang 2012-05-02
  • 打赏
  • 举报
回复
无人知道吗?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧