R中删除跨国际日期变更线多边形多余连线(以rnaturalearth俄罗斯数据为例)
解决方案
核心思路是先对原始WGS84地理坐标的全球国家数据做跨日期变更线的坐标偏移处理,再裁剪为目标投影的研究范围对应的区域,即可消除多余连线。
具体操作步骤
- 第一步:提取原始WGS84坐标系下的国家数据,将经度大于180°的部分做偏移调整,避免多边形在180°经线处被“切断”后投影出现错误连线。
- 第二步:将调整后的地理坐标数据转换为目标投影(EPSG:3338 阿拉斯加阿尔伯斯投影)。
- 第三步:按设定的坐标范围裁剪数据后绘图即可。
可运行的修改后代码
library(tidyverse) library(rnaturalearth) library(sf) # 导入全球国家数据 world <- ne_countries(scale = "medium", returnclass = "sf") # 处理跨国际日期变更线的多边形:调整经度坐标 world_shift <- st_shift_longitude(world) # 设定目标投影与范围 target_crs <- 3338 xmin <- -2255938 xmax <- 1646517 ymin <- 449981 ymax <- 2676986 # 转换为目标投影 world_proj <- st_transform(world_shift, crs = target_crs) # 按范围裁剪数据 world_crop <- st_crop(world_proj, xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax) # 绘图 ggplot()+ geom_sf(data = world_crop, color = "black", size = 1)+ coord_sf(crs = target_crs, xlim = c(xmin, xmax), ylim = c(ymin, ymax))+ theme_bw()
注意事项
- 如果你处理的是其他自定义空间数据,也可以先通过
st_shift_longitude()做经度偏移,再做投影转换,绝大多数跨180°经线的多边形连线问题都可以通过该方法解决。 - 裁剪操作建议在投影转换完成后执行,避免地理坐标裁剪时出现范围匹配错误。
内容的提问来源于stack exchange,提问作者Matt Callahan
相关产品推荐
相关产品推荐

