今天进行空间查询无意中出现此错误,检查查询代码毫无问题,在网上搜索问题,可见 竹子兄 09年写的一篇文章()我才恍然,原来产生错误的原因不在于此,而是在建立另外一个新的FeatureClass时关联引起出现了问题,而不查询出了问题
首先我们数据库 已存在一个FeatureClass,假如为pFeatCla;
而我们要创建一个同结构的的Featureclss pFeautNew,我们调用IFeatureWorkspace.CreateFeatureClass方法,其中第二个参数是,然后我们直接将pFeatCla.Fileds作为参数传进去了。
但是当我们用pFeatCla进行空间查询时就会报出标题中的错误。
其实仔细分析下就能理解报错的原因了,由于创建一个新的FeatureClass的时候 肯定是需要用到一个新的Schima,而我们是将pFeatCla的Fileds属性做外引用的方式存放到新的FeatureClass(pFeautNew中),那么此时相当于两个FeatureClass公用一套数据结构,所以当你用这两个中的任意一个FeatureClass进行空间查询时就会报错。
解决方法:
1、直接用 IClone 接口 克隆出一个新的Fields
IClone clone = pFeatCla.Fields as IClone;
IFields pFields = clone.Clone() as IFields;2、自己再重新建立一个新的pFeilds ,如 竹子 的文章
当然既然已经有个Shcima存在,我们当然没有必要再去进行选择2操作了
所以直接用方法1进行操作就非常方便了!