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

如何在R语言tmap中实现地图指定区域的矩形框放大效果?

实现德国PLZ地图指定区域的矩形框放大效果

核心实现步骤

要完成指定位置的矩形框标注+局部放大效果,需完成三个关键操作:定位目标区域边界、在主图绘制放大框、生成并嵌入局部放大图。以下是基于你现有代码的完整实现方案:

完整代码示例

library(sf)
library(dplyr)
library(tmap)
library(grid)

# 读取数据并创建分组(复用原有代码)
germany <- read_sf("data/OSM_PLZ.shp")
germany <- germany %>% 
  mutate(plz_groups = case_when(
    substr(plz, 1, 1) == "1" ~ "Group A",
    substr(plz, 2, 2) == "2" ~ "Group B",    
    substr(plz, 3, 3) == "2" ~ "Group C",    
    TRUE ~ "Group X" # 其余分组
  ))

# 1. 定位目标区域(以科隆PLZ 50667为例)
target_plz <- "50667"
target_area <- germany %>% filter(plz == target_plz)

# 获取目标区域边界框并适当扩展(避免放大区域过于局促)
target_bbox <- st_bbox(target_area)
expanded_bbox <- st_bbox(c(
  xmin = target_bbox["xmin"] - 0.5,
  ymin = target_bbox["ymin"] - 0.5,
  xmax = target_bbox["xmax"] + 0.5,
  ymax = target_bbox["ymax"] + 0.5
), crs = st_crs(germany))

# 将扩展后的边界框转为sf多边形(用于主图绘制放大框)
zoom_box <- st_as_sfc(expanded_bbox)

# 2. 绘制带矩形框的主图
map_de <- tm_shape(germany) +
  tm_fill(col = "plz_groups") +
  # 添加红色高亮放大框,自定义样式
  tm_shape(zoom_box) +
  tm_borders(col = "red", lwd = 2, alpha = 0.8) +
  tm_layout(main.title = "德国PLZ分组地图", main.title.size = 1)

# 3. 生成局部放大图(仅包含扩展边界内的PLZ区域)
germany_zoomin <- germany %>% st_filter(expanded_bbox)
map_zoomin <- tm_shape(germany_zoomin) +
  tm_fill(col = "plz_groups") +
  tm_borders(col = "white", lwd = 0.5) +
  tm_layout(title = "科隆区域放大", title.size = 0.8, 
            frame = TRUE, frame.col = "red")

# 4. 组合主图与放大图
print(map_de)
print(map_zoomin, vp = viewport(x = 0.25, y = 0.25, width = 0.3, height = 0.3))

# 保存组合地图(可选)
# tmap_save(map_de, "germany_plz_zoom.png", vp = viewport(x = 0.25, y = 0.25, width = 0.3, height = 0.3))

关键细节说明

  • 边界扩展:调整expanded_bbox的扩展数值,可以灵活控制放大区域的范围,避免仅显示单个PLZ区域过于狭窄。
  • 矩形框样式:通过tm_borders可自定义边框颜色、粗细和透明度,确保在主图上醒目且不遮挡原有图层。
  • 放大图位置:viewport的x/y参数控制放大图在主图中的位置(取值0-1,对应左下角到右上角),width/height控制尺寸,可根据需求自由调整。
  • 精准区域过滤:使用st_filter替代PLZ前缀过滤,能精准获取指定边界内的所有PLZ区域,适配任意位置的放大需求。

内容的提问来源于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 10:55:50