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

如何基于rnaturalearth生成全球海岸线缓冲区?

全球海岸线可变距离缓冲区实现方案

针对生成全球海岸线面状缓冲区(用于船舶交通数据筛选,支持自定义距离)的需求,结合实际踩坑经验,整理出如下最优实现:

遇到的问题

  • 初期方案生成的缓冲区边缘锯齿严重,且存在国际日期变更线绕接问题
  • 使用terra::buffer()优化后效果提升,但大西洋区域会出现多余缓冲区域

最优代码实现

# 获取海岸线数据
coast <- rnaturalearth::ne_coastline(scale = 110,
                                   returnclass = "sf")
# 预处理海岸线数据
coast <- sf::st_union(coast)
coast <- sf::st_make_valid(coast)
coast <- sf::st_wrap_dateline(coast)

# 生成缓冲区
c_buffer <- terra::vect(coast)
terra::crs(c_buffer) <- "epsg:4326"
# 200海里对应370400米(1海里≈1852米)
c_buffer <- terra::buffer(c_buffer, width = 370400)
c_buffer <- sf::st_as_sf(c_buffer)
c_buffer <- sf::st_wrap_dateline(c_buffer)

# 可视化验证
ggplot2::ggplot()+
  ggplot2::geom_sf(data = c_buffer, fill = "lightBlue")+
  ggplot2::geom_sf(data = coast, fill = "grey")

生成效果

生成的缓冲区效果

自定义距离适配

若需生成其他距离的缓冲区,只需修改terra::buffer()中的width参数:

  • 计算公式:目标距离(海里)× 1852,得到对应的米数后替换代码中的370400即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:13:11