对esriSpatialRelEnum的理解有问题

IFeatureSelection.SelectFeatures

官方解释:Selects features based upon the specifed criteria and combination method.

译文:根据指定的标准和组合方法选择要素。

有人这样解释:已知一个要素图层和我们的选择条件,寻找出符合要求的要素并闪烁显示

指定的标准,即为ISpatialFilter,那我们要考虑ISpatialFilter.Geometry的属性会对结果产生什么影响?

这个Geometry是否应该是合并一整个图层的要素,还是单独来一个一个判定?

如果按照上面的解释,应该是单独判定。

即为:不断改变ISpatialFilter.Geometry,进而改变ISpatialFilter

 

问题:对esriSpatialRelEnum的理解有问题

esriSpatialRelWithin       Description: Query Geometry is Within Target Geometry.

译文:within 查询包含在目标Geometry内的Geometry。

Remarks:Returns a feature if its shape wholly contains the search geometry. Valid for all shape type combinations.

译文:返回一个要素,它的形状包含了这个搜索使用的Geometry。

这里Description与Remarks产生了分歧,或者我的理解出了问题。

但测试结果符合Remarks的解释。

  1. //根据要查询的坐标构造一个点  

  2. IPoint targetPoint = new PointClass();  

  3. targetPoint.PutCoords(x, y);   

  4. //构造空间过滤器  

  5. ISpatialFilter spatialFilter = new SpatialFilterClass();  

  6. spatialFilter.Geometry = targetPoint;  

  7. spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin;//查询的是包含关系    

  8. //在要素类上用空间过滤器进行查询即可  

  9. IFeatureCursor cursor = riverGridFeatureClass.Search(spatialFilter, false);  

由以上代码可以看出:Within查询的是包含SpatialFilter.Geometry的Geometry。

这也就意味着,如果你用AE来写ArcMap中的空间查找,其中的

contain the source layer feature 即:目标要素包含源图层要素选项

对应的过滤关系为

 pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin;

are within the source layer feature 即:目标要素被源图层要素包含选项

对应的过滤关系为

 pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;

注意contain对应的Within、within对应的Contains

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值