Arcgis Engine 提示The operation cannot be performed on a non-simple geometry.

问题背景:

使用search对SDE中图层进行查询与目标Geometry相交的图层。geometry是我通过图幅号获取得到的。报错结果:The operation cannot be performed on a non-simple geometry.

在这里插入图片描述
其中pGeometry是我通过图幅号获取的geometry。

解决思路:

我给大家介绍下我完整解决思路,这边也是和esri客服讨论了。首先可以用arcgis map中GP工具,具体位置是在工具–数据管理----要素—几何检查中可以找到。可以用此工具将被search的图层进行检查。看是否有错误问题。
注意:如果你的数据是存在SDE中的是没必要进行检查的,因为SDE进行入库时候是进行一定程度的检查工作的,一旦不符合要求,是不允许进行入库操作的。如果非要进行检查,首先需要先将数据导出为shpfile再进行检查。
以上是对被search的图层进行检查,接下来是对你传入的geometry进行检查。
在你应用此geometry之前应该执行此代码:

((ITopologicalOperator)pGeometry).Simplify();

简单解释下此代码的意思,其实很简单就是将你的geometry强制转换为简单的几何。
我的问题就是根据这句代码得以解决,那么咱们继续由结果追原因。
为什么我返回的geometry不是简单的几何呢?
本人猜测是因为图幅号返回来的坐标顺序不是一致的,故造成虽然mapcontrol上面图层是四四方方的矩形。但实际上连接顺序不一致。

接下来给大家科普下ITopologicalOperator接口:

大家直接看此链接吧,解释的比较形象。https://blog.csdn.net/sydbc/article/details/17710235

个人总结:本人也是初学arcgis engine ,对AE开发了解也不深刻,只是出现问题了,找解决方法。AE入门比较简单,但是对于每个接口进行深入理解比较难,希望大家也能多多总结,多多交流,将知识共享化,共同成长。加油,各位Gser!我的丘丘384510683。

发布了14 篇原创文章 · 获赞 15 · 访问量 334

猜你喜欢

转载自blog.csdn.net/weixin_42970847/article/details/103051634