ValueError:No可以从null值创建Shapely几何体

Mar*_*ert 3 python shapely

我在使用时遇到此错误cascaded_union(我也尝试过unary_union产生相同的错误):

ValueError:No可以从null值创建Shapely几何体

我已经验证我的多边形是有效的.最初polyB无效,但使用时将其转换为有效多边形buffer(0).

对我做错了什么的想法?这是我的代码:

ValueError: No Shapely geometry can be created from null value
Run Code Online (Sandbox Code Playgroud)

真正

真正

from shapely.geometry import Polygon
from shapely.ops import cascaded_union

def combineBorders(a, b):
    polyA = Polygon(a)
    polyB = Polygon(b)
    pols = [polyA, polyB]

    for p in pols:
        if p.is_valid == False:
            p = p.buffer(0)
        print(p.is_valid)
Run Code Online (Sandbox Code Playgroud)

以下是 polyA,polyB和pols值的链接(确认它们有效后).我的Ubuntu 14.04服务器上安装了以下版本:

  • python-shapely 1.3.0
  • libgeos 3.4.2
  • python 2.7

Mik*_*e T 7

问题中的问题是缓冲的多边形没有放回列表中pols,因此传递了无效的几何体cascaded_union

您可以通过以下方式使这更加简单和通用,可以采用任意数量的多边形几何(不仅仅是两个).

def combineBorders(*geoms):
    return cascaded_union([
        geom if geom.is_valid else geom.buffer(0) for geom in geoms
    ])

polyC = combineBorders(polyA, polyB)
Run Code Online (Sandbox Code Playgroud)