You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用geobr与ggplot2绘制州界:去除点仅保留边界的方法

问题解决:基于市镇数据绘制州级外围边界

我手头有巴西市镇和州级的地图数据(用geobr库处理),想要基于市镇的geometry绘制各州的外围粗线条边界,但按州分组汇总geometry后,地图上出现了大量多余的点,只需要州的外围轮廓,现有代码如下:
[图片:显示含大量点与边界的地图]

代码:

ggplot(df_mun) + 
  geom_sf(aes(fill = Mortalidade), size=0.5, color = "gray50") +
  geom_sf(color = 'black', fill = NA, linewidth = 0.75,
          data = . %>% group_by(name_state) %>% summarise())

解决方法

问题出在默认的summarise()只是简单合并几何对象,没有做拓扑融合,导致保留了市镇间的内部边界,甚至产生碎点。需要用sf包的st_union()来合并同州的市镇几何,生成完整的州级轮廓。

修改后的代码:

library(sf)
library(dplyr)
library(ggplot2)

ggplot(df_mun) + 
  geom_sf(aes(fill = Mortalidade), size=0.5, color = "gray50") +
  geom_sf(color = 'black', fill = NA, linewidth = 0.75,
          data = . %>% group_by(name_state) %>% summarise(geometry = st_union(geometry)))

额外提示

如果修改后仍有异常点,大概率是原始市镇数据存在几何错误,可以先修复:

df_mun <- df_mun %>% mutate(geometry = st_make_valid(geometry))

内容的提问来源于stack exchange,提问作者ElMago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:50:58