IFeatureClassManage接口更新图层全图显示时的范围

作用

更新计算XY、Z和M的范围。这个范围是针对所有要素的最小矩形范围(即FeatureLayer.AreaOfIntersect),不是FeatureClass空间参考中的图层范围。

代码

IFeatureLayer pFeatureLyr = axMapControl1.get_Layer(0) asIFeatureLayer;

ESRI.ArcGIS.Geodatabase.IFeatureClassManage pFeatureClassManage = pFeatureLyr.FeatureClass as ESRI.ArcGIS.Geodatabase.IFeatureClassManage;

pFeatureClassManage.UpdateExtent();

MessageBox.Show(更新完毕!, 信息, MessageBoxButtons.OK,MessageBoxIcon.Information);

如下图所示,当对图层进行了删除操作而范围没有更新时图层全图显示状态

 

通过IFeatureClassManage接口对范围更新后图层显示范围

通过这两个图对比,广大用户便知道了为什么有时候图层全图显示时数据都挤在一起,不能填充题图窗口。原因就是pFeatureLyrAreaOfInterest属性还是最初的,当更新范围后便显示正常了。

pFeatureLyr.AreaOfInterest对比

范围更新前

pFeatureLyr.AreaOfInterest

{System.__ComObject}

   ……………………………………

   Width: 2130.8040008544922

   XMax: 41000.000001907349

   XMin: 38869.196001052856

   YMax: 53600.000001907349

   YMin: 51468.204999923706

   ZMax: NaN

   ZMin: NaN

范围更新后

pFeatureLyr.AreaOfInterest

{System.__ComObject}

  ……………………………………

   Width: 1041.0960006713867

   XMax: 39910.292001724243

   XMin: 38869.196001052856

   YMax: 53600.000001907349

   YMin: 52421.684000015259

   ZMax: NaN

   ZMin: NaN

总结

    IFeatureClassManage接口的UpdateExtent方法更新计算XYZM的范围。这个范围不是创建FeatureClass时指定的图层范围;而是能够容纳下图层中所有要素的最小外接矩形范围,这个范围会影响地图全图显示时图层要素的显示状态。

    IFeatureClassManage接口的UpdateExtent方法可以在当对图层进行了大量删除操作后调用来更新范围,原因是要素被删除后这个范围不会被自动重新计算;而向图层添加要素时会自动计算范围,所以不用调用这个方法。

       IFeatureClassManage接口的UpdateExtent方法执行时会独占FeatureClassschema,执行后不能撤销。

       IFeatureClassManage接口的UpdateExtent方法如果针对的是ArcSDE数据源,各个版本中的要素范围都将被更新;不过,这个更新后范围要在执行了数据库压缩操作后才会生效。

       Coverage数据范围在编辑时是自动维护的,IFeatureClassManage接口的UpdateExtent方法不被Coverage支持。

       FeatureClassspatialreference中的范围是能够存储数据的范围;UpdateExtent方法更新的范围与之完全不同,UpdateExtent方法更新的范围是小于且包含在spatialreference的范围之中。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值