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

如何用ggplot2分别绘制德国科隆与柏林两座城市的地图?

获取科隆、柏林城市地图数据并绘制的方法

下面介绍两种适合在R中获取德国科隆、柏林城市地图数据的实用方法,配合ggplot2即可完成绘图:

方法1:使用sf+geodata获取行政边界数据

适合快速获取标准城市行政范围,操作简单:

  1. 先安装并加载所需包:
install.packages(c("sf", "geodata"))
library(sf)
library(geodata)
  1. 下载德国城市级行政边界数据(level=3对应城市层级),并筛选目标城市:
# 下载德国行政边界数据,临时存储在系统临时目录
germany_cities <- gadm(country = "DEU", level = 3, path = tempdir())

# 筛选科隆(德语名为Köln)和柏林
cologne <- germany_cities[germany_cities$NAME_3 == "Köln", ]
berlin <- germany_cities[germany_cities$NAME_3 == "Berlin", ]
  1. 用ggplot2绘制地图(sf对象可直接用geom_sf()):
# 绘制科隆地图
ggplot() +
  geom_sf(data = cologne) +
  labs(title = "科隆城市地图")

# 绘制柏林地图
ggplot() +
  geom_sf(data = berlin) +
  labs(title = "柏林城市地图")

方法2:使用osmdata从OpenStreetMap获取精细化数据

如果需要街道、建筑等更细节的地图内容,可使用OpenStreetMap的数据:

  1. 安装并加载包:
install.packages("osmdata")
library(osmdata)
  1. 搜索并获取目标城市的边界及细节数据:
# 获取科隆的边界范围
cologne_bbox <- getbb("Cologne, Germany")
# 提取城市级行政边界(admin_level=8对应城市层级)
cologne_osm <- opq(cologne_bbox) %>%
  add_osm_feature(key = "admin_level", value = "8") %>%
  osmdata_sf()
# 提取边界多边形数据
cologne_poly <- cologne_osm$osm_polygons

# 柏林同理,只需替换搜索词
berlin_bbox <- getbb("Berlin, Germany")
berlin_osm <- opq(berlin_bbox) %>%
  add_osm_feature(key = "admin_level", value = "8") %>%
  osmdata_sf()
berlin_poly <- berlin_osm$osm_polygons
  1. 用ggplot2绘图:
ggplot() +
  geom_sf(data = cologne_poly) +
  labs(title = "科隆精细化地图")

注意事项

  • geodata首次运行会下载数据,耗时取决于网络速度;若需长期保存数据,可将path参数改为自定义本地路径。
  • osmdata可通过调整add_osm_feature的参数,获取不同类型的地理要素(如key="highway"获取街道)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:35:22