如何在shapely或类似的纯Python库中运行st_makevalid?

3

shapely或类似库中是否有与postGIS方法st_makevalid完全等效的方法?目前使用.buffer(0)如此处建议的那样是不够的。是否有这个函数的纯python实现?目前我可以通过ctypes直接绑定访问postgis函数,但这是一个麻烦的解决方案,因为我必须从源代码编译和安装。更好的解决方案将会非常受欢迎。


你能解释一下为什么.buffer(0)不够用吗?在你的问题中,你发现了它的限制是什么? - Eskapp
它将删除重复的点,但不会删除循环。 - sakurashinken
据我所知,Shapely多边形不支持循环(如果您指的是自相交的多边形)。您是否检查了Shapely中的MultiPolygon?使用它,您可以将循环表示为单独的多边形,然后进行任何所需的处理。MultiPolygon中的每个多边形都是有效的。 一个图形示例会帮助我们更好地理解您的问题。 - Eskapp
1个回答

2

Shapely 版本需大于等于1.8 才具备此功能。请查看此处文档

from shapely.geometry import Polygon
from shapely.validation import make_valid

invalid_poly = Polygon([(0, 2), (0, 1), (2, 0), (0, 0), (0, 2)])
valid_poly = make_valid(invalid_poly)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接