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

在R语言中如何将船舶坐标点添加至shp格式地图?

将船舶坐标点添加到地图的方法

步骤1:将普通数据框转换为sf格式的点数据

你的船舶数据框d是普通的data.frame,需要先转换成sf类型的点对象,才能和地图图层兼容。转换时要确保坐标系和你的地图map一致:

# 先查看地图的坐标系
st_crs(map)

# 将d转换为sf点对象,指定坐标列并匹配地图的CRS
d_sf <- st_as_sf(d, coords = c("long", "lat"), crs = st_crs(map))

步骤2:在ggplot中叠加船舶点图层

在你已有的ggplot代码基础上,添加geom_sf()绘制船舶点,还可以用geom_sf_text()添加船舶名称标签:

library(ggplot2)
library(sf)

# 绘制底图 + 船舶点 + 标签
ggplot() +
  # 绘制合并后的地图底图,可自定义填充色和边框色
  geom_sf(data = st_union(map, by_feature = FALSE) %>% st_sf(), fill = "lightgray", color = "white") +
  # 绘制船舶点,自定义样式
  geom_sf(data = d_sf, color = "darkred", size = 3, shape = 19) +
  # 添加船舶名称标签,调整位置避免重叠
  geom_sf_text(data = d_sf, aes(label = object), nudge_y = 0.12, color = "black", size = 3.5) +
  # 可选:添加标题和优化主题
  labs(title = "船舶位置分布图") +
  theme_minimal()

关键注意事项

  • 必须保证d_sf的坐标系和map完全一致,否则点会显示在错误位置;如果不一致,可使用st_transform(d_sf, crs = st_crs(map))进行转换。
  • 可根据需求调整点的颜色、大小、形状,以及标签的偏移量(nudge_x/nudge_y参数)来优化显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:55:01