【问题标题】:How to run st_makevalid in shapely or similar pure python library? [closed]如何在 shapely 或类似的纯 python 库中运行 st_makevalid? [关闭]
【发布时间】:2021-11-17 03:32:38
【问题描述】:

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

【问题讨论】:

  • 你能解释一下为什么.buffer(0) 不够用吗?您在问题中发现它的局限性是什么?
  • 它会删除重复的点,但不会删除循环
  • 据我所知,Shapely Polygons 不支持循环(如果循环是指自相交的多边形)。你有没有很好地检查 MultiPolygon?有了这个,您可以将循环表示为单独的多边形,然后执行您需要的任何处理。 MultiPolygon 中的每个多边形都是有效的。一个图形示例将有助于理解您的问题。

标签: python postgis shapely


【解决方案1】:

Shapely >=1.8 有这个功能。请参阅docs here

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)

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2012-05-24
    • 2016-08-19
    • 2021-10-21
    • 2022-01-19
    • 2018-03-20
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多