Shapely中MultiPoint无法解包报TypeError问题问询
Shapely MultiPoint 解包报错的解决办法
你遇到的TypeError: cannot unpack non-iterable MultiPoint object错误,原因是Shapely的MultiPoint对象本身不支持直接解包操作,即便打印显示包含两个点,也得通过它的geoms属性来获取内部的点集合。
修改后的代码
直接访问MultiPoint的geoms属性即可完成解包:
def get_t_start(t_line: geometry.LineString): print('get_t_start', t_line.boundary) p1, p2 = t_line.boundary.geoms t_start = p1 if p1.y < p2.y else p2 return t_start
原理说明
Shapely的集合类(如MultiPoint、MultiPolygon)会把内部元素存储在geoms属性中,这是一个可迭代对象,能直接被解包为单个的几何对象(这里就是Point)。你之前在其他应用中能直接解包,大概率是当时使用的Shapely版本逻辑不同,或是边界返回的是Point元组而非MultiPoint,但当前版本必须通过geoms属性访问内部元素。
内容的提问来源于stack exchange,提问作者Giorgos Betsos
相关产品推荐
相关产品推荐

