空间查询时出错误 An expected Field was not found or could not be retrieved properly. [SHAPE.AREA] 问题的解决...

    今天进行空间查询无意中出现此错误,检查查询代码毫无问题,在网上搜索问题,可见 竹子兄 09年写的一篇文章(http://www.3snews.net/html/51/3051-24608.html)我才恍然,原来产生错误的原因不在于此,而是在建立另外一个新的FeatureClass时关联引起出现了问题,而不查询出了问题

首先我们数据库 已存在一个FeatureClass,假如为pFeatCla;

而我们要创建一个同结构的的Featureclss pFeautNew,我们调用IFeatureWorkspace.CreateFeatureClass方法,其中第二个参数是IFields,然后我们直接将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进行操作就非常方便了!

转载于:https://www.cnblogs.com/flyingliang-gis/archive/2010/06/21/1762160.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值