Geopandas中如何批量相交多个MultiPolygon/Polygon并获取交集多边形
计算GeoDataFrame中所有MultiPolygon的共同交集
你之前的思路有误——两两相交后再处理得到的是所有两两交集的并集,而非所有几何对象的共同交集。正确的做法是依次递进求交集:从第一个几何对象开始,逐个与后续的几何求交集,最终得到所有对象的共同重叠区域。
实现代码
import geopandas as gpd # 假设你的GeoDataFrame是df if len(df) == 0: raise ValueError("GeoDataFrame不能为空") # 初始化交集为第一个几何对象 total_intersection = df['geometry'].iloc[0] # 遍历剩余的几何,依次求交集 for geom in df['geometry'].iloc[1:]: total_intersection = total_intersection.intersection(geom) # 如果中途交集为空,可提前终止循环 if total_intersection.is_empty: break # 输出最终交集结果 print(total_intersection)
关键说明
- 该方法会逐步缩小范围,最终结果可能是
Polygon、MultiPolygon或空几何(无共同重叠区域时)。 - 无需使用
unary_union和polygonize,这类方法适用于合并线生成多边形的场景,不适合求所有对象的共同交集。
内容的提问来源于stack exchange,提问作者data en
相关产品推荐
相关产品推荐

