C# Arc Engine二次开发

whatdoyousay 2014-07-31 03:42:35
我现在做到了选中图层中的要素,但是如何把选中要素作为shp文件输出,请简要说明一下思路
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
balladc 2015-11-17
  • 打赏
  • 举报
回复
引用 7 楼 cjtlp2006 的回复:
[quote=引用 2 楼 liuhuibing12 的回复:] [quote=引用 1 楼 cjtlp2006 的回复:] 你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。 IFeatureLayer newShpLayer = new FeatureLayerClass(); newShpLayer.FeatureClass = yourSelectedFeatureClass; ......
首先谢谢你的答复,首先我把我的源码写上来

                IMap map = axMapControl1.Map;
                ISelection selection = map.FeatureSelection;
                IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection;
                iEnumFeatureSetup.AllFields = true;
                IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup;
                enumFeature.Reset();
                IFeature pFeature = enumFeature.Next();
                IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;
                //获取axMapControl空间上选定的要素
这里对不对[/quote] 你的代码写到这里就可以和我给你提供的代码对接了。 你这里已经获取到了featureclass对象,可以使用我的代码进行保存为shp文件了。[/quote] IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;得到的FeatureClass是整个图层的全部要素,并不是选择的那一个。。。我试了好多遍。。。
走马看黄花 2015-01-27
  • 打赏
  • 举报
回复
楼主问题解决了吗
欲说还休cjt 2014-09-11
  • 打赏
  • 举报
回复
引用 2 楼 liuhuibing12 的回复:
[quote=引用 1 楼 cjtlp2006 的回复:] 你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。 IFeatureLayer newShpLayer = new FeatureLayerClass(); newShpLayer.FeatureClass = yourSelectedFeatureClass; ......
首先谢谢你的答复,首先我把我的源码写上来

                IMap map = axMapControl1.Map;
                ISelection selection = map.FeatureSelection;
                IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection;
                iEnumFeatureSetup.AllFields = true;
                IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup;
                enumFeature.Reset();
                IFeature pFeature = enumFeature.Next();
                IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;
                //获取axMapControl空间上选定的要素
这里对不对[/quote] 你的代码写到这里就可以和我给你提供的代码对接了。 你这里已经获取到了featureclass对象,可以使用我的代码进行保存为shp文件了。
欲说还休cjt 2014-09-11
  • 打赏
  • 举报
回复
引用 5 楼 liuhuibing12 的回复:
[quote=引用 1 楼 cjtlp2006 的回复:] 你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。
IWorkspaceFactory wksf = new ShapefileWorkspaceFactoryClass();
                IFeatureWorkspace featureWorkspace = wksf.OpenFromFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 0) as IFeatureWorkspace;
                IFeatureClass newFeatureClass = featureWorkspace.CreateFeatureClass(shplyrName, fields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
                IFeatureLayer newShpLayer = new FeatureLayerClass();
                newShpLayer.FeatureClass = yourSelectedFeatureClass;
        ......
大神,你有部分源码么,为什么我创建的shp文件打开都是空的,而且只有三个文件,少了sbn,sbx。是因为缺少了要素写入shp文件么。[/quote] shp文件的sbn和sbx不是必需的,只要.shp、.dbf和.shx就可以了。
whatdoyousay 2014-08-04
  • 打赏
  • 举报
回复
引用 1 楼 cjtlp2006 的回复:
你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。
IWorkspaceFactory wksf = new ShapefileWorkspaceFactoryClass();
                IFeatureWorkspace featureWorkspace = wksf.OpenFromFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 0) as IFeatureWorkspace;
                IFeatureClass newFeatureClass = featureWorkspace.CreateFeatureClass(shplyrName, fields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
                IFeatureLayer newShpLayer = new FeatureLayerClass();
                newShpLayer.FeatureClass = yourSelectedFeatureClass;
        ......
大神,你有部分源码么,为什么我创建的shp文件打开都是空的,而且只有三个文件,少了sbn,sbx。是因为缺少了要素写入shp文件么。
whatdoyousay 2014-08-01
  • 打赏
  • 举报
回复
引用 3 楼 zhi_ai_yaya 的回复:
小弟也是刚刚接触GIS二次开发,比lz水平还菜呢!实习就是搞GIS哈哈
我叫小菜菜 2014-08-01
  • 打赏
  • 举报
回复
小弟也是刚刚接触GIS二次开发,比lz水平还菜呢!实习就是搞GIS哈哈
whatdoyousay 2014-07-31
  • 打赏
  • 举报
回复
引用 1 楼 cjtlp2006 的回复:
你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。 IFeatureLayer newShpLayer = new FeatureLayerClass(); newShpLayer.FeatureClass = yourSelectedFeatureClass; ......
首先谢谢你的答复,首先我把我的源码写上来

                IMap map = axMapControl1.Map;
                ISelection selection = map.FeatureSelection;
                IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection;
                iEnumFeatureSetup.AllFields = true;
                IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup;
                enumFeature.Reset();
                IFeature pFeature = enumFeature.Next();
                IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;
                //获取axMapControl空间上选定的要素
这里对不对
欲说还休cjt 2014-07-31
  • 打赏
  • 举报
回复
你要先创建一个Shpfile类型的layer,然后将你选中的FeatureClass保存在这个shpfile中就OK了。
IWorkspaceFactory wksf = new ShapefileWorkspaceFactoryClass();
                IFeatureWorkspace featureWorkspace = wksf.OpenFromFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 0) as IFeatureWorkspace;
                IFeatureClass newFeatureClass = featureWorkspace.CreateFeatureClass(shplyrName, fields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
                IFeatureLayer newShpLayer = new FeatureLayerClass();
                newShpLayer.FeatureClass = yourSelectedFeatureClass;
        ......

110,539

社区成员

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

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

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