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

如何基于现有5位邮编Shapefile聚合生成2位邮编边界并保留着色粒度?

解决方案:聚合5位邮编数据到2位级别并叠加边界

可以直接利用现有5位邮编Shapefile生成2位邮编级别的边界,具体步骤如下:

1. 添加2位邮编字段

先在你的germany数据框中提取邮编前两位,创建新字段:

germany <- germany %>%
  mutate(plz2 = substr(plz, 1, 2))

2. 聚合生成2位邮编边界

通过分组合并同一2位邮编下的所有5位邮编多边形,生成2位级别区域:

germany_plz2 <- germany %>%
  group_by(plz2) %>%
  summarise(geometry = st_union(geometry)) %>%  # 合并同组内的所有多边形
  ungroup()

这一步会得到一个新的sf对象,每行对应一个2位邮编区域,几何图形是该区域内所有5位邮编多边形的合并结果。如果合并后出现拓扑缝隙/重叠,可添加st_buffer(0)修复:

germany_plz2 <- germany %>%
  group_by(plz2) %>%
  summarise(geometry = st_union(geometry) %>% st_buffer(0)) %>%
  ungroup()

3. 叠加2位邮编边界到现有地图

在你原有着色地图的基础上,添加2位邮编的边界层(仅显示线条):

tm_shape(germany) +
  tm_fill(col = "plz_groups") +  # 保留5位邮编的着色粒度
  tm_shape(germany_plz2) +
  tm_borders(col = "black", lwd = 1.5)  # 自定义边界颜色和粗细

你可以根据需求调整col(边界颜色)和lwd(线条粗细)参数,让边界更适配地图风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:45:18