如何使用QGIS、Python等工具将L形多边形拆分为两个优先为矩形的多边形
L形多边形拆分为矩形操作方案

方法1:QGIS 图形化操作
- 导入L形多边形图层到QGIS,选中需要拆分的要素
- 开启顶点捕捉功能,使用「分割特征」工具,从L形的内凹直角点出发向对边绘制垂直分割线,确认分割即可直接得到两个矩形子要素
- 批量拆分可安装「Polygon Splitter」插件,配置正交拆分规则后自动处理全图层要素
方法2:Python 代码实现(依赖geopandas、shapely)
拆分逻辑:先计算L形的最小外接矩形,求外接矩形与原L形的差集得到缺失的小矩形,再通过差集运算得到两个拆分后的矩形。
import geopandas as gpd from shapely.geometry import Polygon # 示例L形多边形,可替换为读取shp/geojson得到的要素 l_polygon = Polygon([(0,0), (2,0), (2,2), (1,2), (1,1), (0,1), (0,0)]) # 获取最小外接矩形 min_x, min_y, max_x, max_y = l_polygon.bounds min_rect = Polygon([(min_x, min_y), (max_x, min_y), (max_x, max_y), (min_x, max_y)]) # 计算L形缺失的小矩形 missing_rect = min_rect.difference(l_polygon) # 拆分得到两个矩形 if missing_rect.area * 2 < min_rect.area: rect_a = l_polygon.difference(missing_rect) rect_b = missing_rect else: rect_a = missing_rect rect_b = l_polygon.difference(missing_rect) # 如需导出结果,用下方代码 # split_gdf = gpd.GeoDataFrame(geometry=[rect_a, rect_b], crs="EPSG:4326") # split_gdf.to_file("split_result.shp", encoding="utf-8")
- 上述代码仅适用于边均为水平/垂直的正交L形,非正交L形可通过
shapely.ops.split方法传入自定义分割线实现拆分 - 批量处理只需遍历GeoDataFrame的每个要素执行上述逻辑即可
内容的提问来源于stack exchange,提问作者ghost
相关产品推荐
相关产品推荐

