如何修复自相交的多边形?
有没有办法使用 GEOS 消除多边形的自相交?
Is there a way to remove self-intersections from a polygon using GEOS?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有办法使用 GEOS 消除多边形的自相交?
Is there a way to remove self-intersections from a polygon using GEOS?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
所以,我必须自己回答这个问题。也许它会对某人有所帮助。
您可以使用 geos::operation::buffer::BufferOp 类修复多边形。例如,
您可以在JTS 拓扑套件的秘密中找到一些更好的秘诀。
So, I have to answer the question myself. Maybe it will help someone.
You can repair a polygon using the geos::operation::buffer::BufferOp class. E.g.
You can find some more good recipes in the Secrets of the JTS Topology Suite.
通常允许点相交,因此您可以更改
为
点 3 和点 6 相同的位置。如果不允许点相交,请稍微移动其中一个点。
根据我的经验,大多数此类交叉点都来自错误的多边形简化,因此如果可能的话最好返回源头。
Often point intersections are allowed, so you can change
to
where points 3 and 6 are the same. If point intersections are not allowed, move one of them a small amount.
In my experience, most such intersections some from a faulty polygon simplification, so it would be better to go back to the source if possible.
自相交多边形无效。因此 BufferOp 可能会给出无效结果。
我没有找到任何方法来修复地理中的自相交多边形。
PostGIS中的st_makevalid函数使用geos。因此可以研究源代码。
Self-intersected polygon is invalid. Thus BufferOp may give invalid result.
I didn't find any way to fix self-intersected polygon in geos.
st_makevalid function in PostGIS uses geos. So it is possible to investigate the source code.