如何修改Python代码计算MultiPolygon外边界边数(无循环)
解决方案
原代码仅支持单个Polygon类型的几何对象,遇到MultiPolygon会因缺少exterior属性报错。以下修改后的代码可同时处理Polygon和MultiPolygon,且仅统计外边界边数,全程无显式循环:
edges = fp.geometry.apply(lambda x: sum(len(geom.exterior.coords) - 1 for geom in x.geoms) if x.type == 'MultiPolygon' else len(x.exterior.coords) - 1)
代码逻辑说明
- 通过
apply遍历每一行的几何对象 - 针对不同几何类型分支处理:
- 若为
MultiPolygon:通过x.geoms获取其包含的所有子Polygon,用生成器表达式计算每个子Polygon外边界的边数(坐标点数量减1),再求和得到总外边界边数 - 若为普通
Polygon:沿用原逻辑计算单多边形外边界边数
- 若为
- 生成器表达式属于隐式迭代,未使用显式循环语句,符合需求
内容的提问来源于stack exchange,提问作者arkriger
相关产品推荐
相关产品推荐

