使用rmapshaper简化GeoJSON后R Plotly Choropleth图反转问题求助
问题原因
多边形顶点的**环绕方向(顺时针/逆时针)**在GeoJSON简化过程中被反转。Plotly的Choropleth依赖该方向识别多边形内部区域,方向错误会导致填充区域反转;而sf基础绘图会自动处理方向,因此显示正常。
解决方法
1. 简化时维持拓扑结构
修改ms_simplify参数,启用keep_shapes = TRUE避免方向反转:
geosf_simpl <- ms_simplify(geosf, keep = 0.01, keep_shapes = TRUE)
注:keep参数可按需调整,0.01比0.001保留更多细节,降低过度简化引发的拓扑问题风险。
2. 手动修正多边形方向
先修复无效几何,再反转顶点方向:
# 修复无效几何对象 geosf_simpl <- st_make_valid(geosf_simpl) # 反转多边形顶点环绕方向 geosf_simpl <- st_reverse(geosf_simpl)
3. 优化GeoJSON转换
转换回GeoJSON时指定精度,减少文件体积同时保证兼容性:
geoback <- sf_geojson(geosf_simpl, precision = 3)
验证
将修正后的geojson2替换原代码中的geojson,重新运行即可得到正常显示的Choropleth图。
内容的提问来源于stack exchange,提问作者Luitpold Wienerle
相关产品推荐
相关产品推荐

