在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
相关产品推荐
相关产品推荐

