python-2.7 – ValueError:No可以从null值创建Shapely几何体
发布时间:2020-12-20 11:44:17 所属栏目:Python 来源:网络整理
导读:我在使用cascaded_union时遇到此错误(我也尝试过unary_union,它会产生相同的错误): ValueError: No Shapely geometry can be created from null value 我已经验证我的多边形是有效的.最初polyB无效,但使用buffer(0)将其转换为有效多边形. 对我做错了什么的
我在使用cascaded_union时遇到此错误(我也尝试过unary_union,它会产生相同的错误):
我已经验证我的多边形是有效的.最初polyB无效,但使用buffer(0)将其转换为有效多边形. 对我做错了什么的想法?这是我的代码: 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)
newShape = cascaded_union(pols) # THIS IS WHERE THE ERROR KEEPS SHOWING UP return newShape Here is a link到polyA,polyB和pols的值(确认它们有效后).我的Ubuntu 14.04服务器上安装了以下版本: > python-shapely 1.3.0 解决方法
问题中的问题是缓冲的多边形没有放回列表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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |