我在使用时遇到此错误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服务器上安装了以下版本:
问题中的问题是缓冲的多边形没有放回列表中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)
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |