如何将ggplot2与autoplot.OpenStreetMap结合显示点数据
解决方法
要将点数据叠加到OSM地图上,核心是统一坐标系——openmap返回的地图采用Web墨卡托投影(EPSG:3857),而你的点数据默认是WGS84经纬度(EPSG:4326),直接叠加会导致坐标系不匹配,点无法正确显示。
按以下步骤修改代码即可:
- 转换点数据的坐标系,与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)
- 叠加地图与点图层
# 先获取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
相关产品推荐
相关产品推荐

