如何在Geopandas中对单个多边形图层执行Union操作?
实现Geopandas单图层Union操作
在Geopandas中没有直接对应QGIS单图层Union的内置函数,但可以通过两种方式实现相同效果,根据需求选择:
1. 保留原始属性(对应QGIS Union工具完整功能)
如果需要保留所有重叠区域对应的原始要素属性,可将图层与自身执行overlay操作:
import geopandas as gpd # 假设你的图层GeoDataFrame名为zone union_with_attributes = gpd.overlay(zone, zone, how='union') # 可选:去除重复的几何与属性 union_with_attributes = union_with_attributes.drop_duplicates(subset='geometry').reset_index(drop=True)
2. 仅合并几何(高效消除重叠,不保留属性)
如果只需要无重叠的几何集合,无需原始属性,使用unary_union更高效:
import geopandas as gpd # 合并所有几何为单个MultiPolygon对象 merged_geom = zone.geometry.unary_union # 将MultiPolygon拆分为单个Polygon并转为GeoDataFrame union_geometry_only = gpd.GeoDataFrame( {'geometry': list(merged_geom.geoms)}, crs=zone.crs )
注:上述方法仅适用于多边形图层,若图层包含线、点等非多边形要素,unary_union行为会有所不同。
内容的提问来源于stack exchange,提问作者Alexandro47
相关产品推荐
相关产品推荐

