使用GeoSeries.simplify简化流域矢量后绘图全红如何保留几何完整性
问题原因
GeoSeries.simplify()默认未严格保留拓扑结构,容差设置偏大时会导致流域多边形出现边界断裂、自相交、拓扑反转等非法几何问题,cartopy渲染这类非法多边形时会误将整个球面判定为填充区域,出现全图变红的异常。- 代码末尾的
mrb_basins.plot()是geopandas的无指定轴默认绘图,会自动创建新的PlateCarree投影轴,和你之前定义的正射投影轴冲突,也可能干扰渲染结果。
解决方案
- 调整
simplify参数,显式开启拓扑保留,避免破坏多边形结构:
# 将原简化行替换为如下代码 mrb_basins['geometry'] = mrb_basins['geometry'].simplify(tolerance=0.1, preserve_topology=True)
- 删除代码末尾的
mrb_basins.plot()行,避免投影轴冲突。 - 如果修改后仍有填充异常,可逐步降低
tolerance参数值(比如调整为0.05、0.02),容差越小简化程度越低,可按需在图形体积和渲染效果之间找到平衡点。
内容的提问来源于stack exchange,提问作者Stücke
相关产品推荐
相关产品推荐

