`
icheng
  • 浏览: 830686 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

arcengine 空间查询SpatialRelDescription使用

 
阅读更多

来自:http://bbs.esrichina-bj.cn/ESRI/redirect.php?goto=newpost&tid=5682

任何一个几何体都可以看做有三部分组成, 比如说一个矩形,那么这个矩形几何体由边界,外部,和内部组成. 那么它和另外的几何体的关系就可以通过这三个部分来界定.

现在有某个多边形几何体A, 想找到与A边界有重合,但是不存在交叉的另外一个多边形几何体.也就是它们公共部分的面积为零. 那么这个字符串为:"F***T****",第一个F表示不能有重合部分,第五个位置的T表示边界要有重合,其它的关系不需要关心就用"*"来表示就可以了.

T表示对应的关系要为真时进入结果集
F表示对应的关系要为假时进入结果集
*表示对应的关系真假无所谓,都可以进入结果集

这九个关系取交集,最终的结果为满足条件的结果集.


ISpatialFilter.SpatialRel设置为esriSpatialRelRelate,并且设置SpatialRelDescription为某个字符串。该字符串的构造方法:
该字符串为长度为9, “*********”;每一个“*“可以换为”T“或”F“,T表示True,F表示False。具体怎样构造根据具体需要来定。这样就相当于自定义了一个空间关系。每一个字符从左到右分别对应一下的关系
1 interior interior
2 interior boundary
3 interior exterior
4 boundary interior
5 boundary boundary
6 boundary exterior
7 exterior interior
8 exterior boundary
9 exterior exterior

这9个关系是分别从几何体的内部,边界,外部来区分的,所有的几何体之间的拓扑关系不外乎这9个关系的组合。
按照你的想法,应该把字符串设置为”T**T*****",

最终的代码可以是:
spfilter.SpatialRel=esriSpatialRelate;
spfilter.SpatialRelDescription = ”T**T*****";

你可以试一下看看结果是否正确,如果不行的话,再调整一下字符串就可以了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics