关于IGeometry的值随IFeature变化的问题

 来看下面一段代码:

这段代码的本意在于循环当前选择集 ,将选择集中的所有图层要素的geometry合并起来,但是这段代码在执行上出现了问题。

假设选择集中有两个元素,第一个的extent是从1,1 到2,2 ,第二个的extent是从3,3 到4,4 。

循环第一次,pUnionGeometry的值被赋为第一个元素的geometry,此时它的extent是从1,1 到2,2 。但到循环最后一句pFeature = pFeatureCursor.NextFeature();pFeature被赋为第二个元素,这时pUnionGeometry的值也会自动被赋为第二个元素的geometry,此时它的extent变为3,3到4,4,这样显然与程序的初衷是不相符的。

 

修改方法:将pGeometry = pFeature.Shape;修改为:pGeometry = pFeature.ShapeCopy;

 

由此可以看出IGeometry的对象只是一个到IFeature.Shape的映射,会随着前者的变化而变化,要得到一个不随之变化的IGeometry,只有保存它的一个副本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值