如何修复自相交的多边形?

发布于 2024-10-03 20:03:44 字数 30 浏览 3 评论 0原文

有没有办法使用 GEOS 消除多边形的自相交?

Is there a way to remove self-intersections from a polygon using GEOS?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2024-10-10 20:03:44

所以,我必须自己回答这个问题。也许它会对某人有所帮助。

您可以使用 geos::operation::buffer::BufferOp 类修复多边形。例如,

geos::geom::Geometry * result = 
                       geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);

您可以在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.

geos::geom::Geometry * result = 
                       geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);

You can find some more good recipes in the Secrets of the JTS Topology Suite.

梅倚清风 2024-10-10 20:03:44

通常允许点相交,因此您可以更改

1  2   4
*--*   *       
|   \ /|
|    X |
|   / \|
*--*   *
6  5   3

1  2   4
*--*   *       
|   \ /|
|   3*6|
|   / \|
*--*   *
8  7   5

点 3 和点 6 相同的位置。如果不允许点相交,请稍微移动其中一个点。

根据我的经验,大多数此类交叉点都来自错误的多边形简化,因此如果可能的话最好返回源头。

Often point intersections are allowed, so you can change

1  2   4
*--*   *       
|   \ /|
|    X |
|   / \|
*--*   *
6  5   3

to

1  2   4
*--*   *       
|   \ /|
|   3*6|
|   / \|
*--*   *
8  7   5

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.

箹锭⒈辈孓 2024-10-10 20:03:44

自相交多边形无效。因此 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文