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

如何将ggplot2与autoplot.OpenStreetMap结合显示点数据

解决方法

要将点数据叠加到OSM地图上,核心是统一坐标系——openmap返回的地图采用Web墨卡托投影(EPSG:3857),而你的点数据默认是WGS84经纬度(EPSG:4326),直接叠加会导致坐标系不匹配,点无法正确显示。

按以下步骤修改代码即可:

  1. 转换点数据的坐标系,与OSM地图对齐
# 将数据框转为sf对象,明确原始坐标系为WGS84(经纬度)
df_sf <- st_as_sf(df, coords = c("Longitude", "Latitude"), crs = 4326)
# 转换为Web墨卡托投影,和OSM地图的坐标系一致
df_sf_3857 <- st_transform(df_sf, crs = 3857)
  1. 叠加地图与点图层
# 先获取OSM地图(保留你原有的代码)
dc <- openmap(c(19.353014580954277,-99.14118184937192), 
              c(19.287683266903073,-99.03186392856783), 
              zoom = NULL,
              type = "osm", 
              mergeTiles = TRUE)

# 绘制地图并叠加转换后的点图层
autoplot.OpenStreetMap(dc) +
  geom_sf(data = df_sf_3857, color = "#ff3333", size = 2) +  # 自定义点的颜色、大小
  theme_void()

补充说明

  • 若要调整点的样式,直接修改geom_sf中的color、size、shape等参数即可。
  • 不确定地图坐标系时,可通过st_crs(dc)查看(openmap返回的图层默认是EPSG:3857)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:42:45