IFeature.Shape赋值时出错处理
来源:互联网 发布:广州易娱网络工作环境 编辑:程序博客网 时间:2024/06/05 15:32
问题提出: 在目标要素集新建一个要素,在赋值到Shape时出现ComException("这个集合中找不到此项目").
伪代码:
IFeature ft = IFeatureClass.CreateFeature();
ft.Shape = IPolyline <- Throw ComException
(包括IFeatureBuffer 的情况,IFeatureBuffer对Shape赋值时也会抛出ComException)
原因:
由于新建的要素缺少要素集中某些内容导致新要素无法写入要素集。 Google查出来的多数人情况是要素集缺少OID字段或SHAPE字段。
但我出现的问题不关着两个字段的事,这两个字段通常都是存在的。我的情况是要素集多出了 Z Value,而通过new IPolyline新建的要素是没有Z Value的,所以导致赋值时出现ComException。
解决方法:
新建要素前先检查要素集是否存在Z value,如果存在,则在新建要素是把Z value写入。
//检查要素集是否存在z value
bool IsFeatureClassExistZ(IFeatureClass fc)
{
IGeoDataset geoDT = fc as IGeoDataset;
IZAware zAware = geoDT.Extent as IZAware;
return zAware.ZAware;
}
//创建要素部分
IPolyline pl = new PolylineClass();
//略过插入点代码
if( IsFeatureClassExistZ(featureClass) )
{
IZAware zAware = pl as IZAware;
zAware.ZAware = true;
}
IFeature ft = featureClass.CreateFeature();
ft.Shape = pl;
ft.Store();
伪代码:
IFeature ft = IFeatureClass.CreateFeature();
ft.Shape = IPolyline <- Throw ComException
(包括IFeatureBuffer 的情况,IFeatureBuffer对Shape赋值时也会抛出ComException)
原因:
由于新建的要素缺少要素集中某些内容导致新要素无法写入要素集。 Google查出来的多数人情况是要素集缺少OID字段或SHAPE字段。
但我出现的问题不关着两个字段的事,这两个字段通常都是存在的。我的情况是要素集多出了 Z Value,而通过new IPolyline新建的要素是没有Z Value的,所以导致赋值时出现ComException。
解决方法:
新建要素前先检查要素集是否存在Z value,如果存在,则在新建要素是把Z value写入。
//检查要素集是否存在z value
bool IsFeatureClassExistZ(IFeatureClass fc)
{
IGeoDataset geoDT = fc as IGeoDataset;
IZAware zAware = geoDT.Extent as IZAware;
return zAware.ZAware;
}
//创建要素部分
IPolyline pl = new PolylineClass();
//略过插入点代码
if( IsFeatureClassExistZ(featureClass) )
{
IZAware zAware = pl as IZAware;
zAware.ZAware = true;
}
IFeature ft = featureClass.CreateFeature();
ft.Shape = pl;
ft.Store();
- IFeature.Shape赋值时出错处理
- IFeature接口
- TFS 处理报表时出错
- Hbase配置时出错处理
- android:shape 图形处理
- 出错处理
- 出错处理
- 出错处理
- 出错处理
- 关于 给absolutepage赋值出错
- MDK赋值出错的BUG
- android textview 赋值类型出错
- AO 移动IFeature
- IFeature 本质解析
- Ubuntu编译lightttpd时出错处理
- Ubuntu编译lightttpd时出错处理
- 关于vc链接时出错处理
- 关于dpkg:处理 xxx (--configure)时出错
- how to use the boost library
- vs2010 解决下断点失效问题
- 获取CAD当前比例尺方法
- 连载IT小说《失业的程序员》讲述一个Android开发者的奋斗史
- 翻转字符串
- IFeature.Shape赋值时出错处理
- Mac OS 下 命令行清除废纸篓 与 Mac OS 截屏快捷键
- xcode4下使用svn1.7
- IOS开发(84)之移动图形
- Delphi for iOS开发指南(9):在iOS应用程序中使用ListBox组件来显示TableView
- 过滤器 打印请求日志
- 10.4
- 高质量C++/C编程指南
- javaScript对象创建与使用