IFeature.Shape赋值时出错处理
2013-05-15 09:08
176 查看
问题提出: 在目标要素集新建一个要素,在赋值到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();
相关文章推荐
- Arcpy处理修改shapefile FeatureClass 线要素坐标
- [错误]文件 UNKNOWN.RPT 内出错:无法将请求提交给后台处理。
- Windows Service开发日志一(Win服务的一些技巧与出错处理)
- android混淆配置及出错处理
- 出错处理
- day_03_出错处理和环境变量
- Sharepoint 2010 工作流启动时处理出错
- 使用natapp发布个人网站(含出错处理方法)
- gedit出错的处理
- WSS3SDK之:如何创建一个事件处理程序Feature
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- 报的错误是:创建userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错:
- 利用PHP自定义错误处理器处理出错信息
- rmlv出错处理一例
- java初学者知识小总结-01(byte数据类型赋值出错)
- 【基本知识】重定向,出错处理,管道,时间值
- dpkg:处理 xxx (--configure)时出错解决办法
- 几个出错处理的函数abort、exit、atexit、strerror函数的使用方法
- 名称以无效字符开头。处理资源 'http://localhost/departMent/default.aspx' 时出错。第 1 行,位
- ASP错误,处理 URL 时服务器上出错。请和系统管理员联络。