TypeError: ‘MultiPolygon‘ object is not iterable

文章讲述了在Python编程中遇到的TypeError,当尝试迭代MultiPolygon对象时。解决方法是将`isinstance(geometry,MultiPolygon)`替换为`geometry.type==MultiPolygon`,或者使用`geometry.geoms`属性来访问并迭代。这强调了类型检查的明确性以及不同方法在继承关系中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TypeError Traceback (most recent call last)

Cell In[30], line 72

70 obstacles.append(obstacle)

71 elif isinstance(geometry, MultiPolygon):

---> 72 for polygon in geometry:

73 coordinates = list(polygon.exterior.coords)

74 obstacle = [list(coord) for coord in coordinates]

TypeError: 'MultiPolygon' object is not iterable

报错:'MultiPolygon'不可迭代
解决:这里貌似是for polygon in geometry这一句的问题,但是把 elif isinstance(geometry, MultiPolygon):换成
 elif (geometry.type== MultiPolygon):

以后就可以正常运行了。

原因:instance可用于继承关系的判断,type 比isinstance更明确类型
1.isinstance(geometry, MultiPolygon):

使用 isinstance 函数检查对象是否是指定类或其子类的实例。这种方式会考虑到继承关系,即使对象是某个类的子类也会返回 True。示例:如果 geometryMultiPolygon 的子类,例如 CustomMultiPolygon,也会返回 True

2.(geometry.type == 'MultiPolygon'):

则直接比较对象的类型。要求对象的确是准确的 MultiPolygon 类型,而不是其子类。如果 geometryCustomMultiPolygon 的实例,会返回 False


更新:

解决:若仍存在'MultiPolygon'对象不可迭代的问题,可以通过geoms属性来访问'MultiPolygon'对象中的polygon

for polygon in geometry.geoms:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值