首页 > 解决方案 > 使用 R 中的传单库绘制跨越国际日期变更线的路线

问题描述

我有兴趣使用 R 的传单库绘制从滑铁卢到台湾的路线。路线的坐标是使用 geosphere 中的 gcIntermediate 函数获得的。然而,该路线涉及国际日期变更线的交叉,因此该路线在地图边缘被截断,并在顶部与一条直线相连。

我得到的情节:错误的地图

在此处输入图像描述

我想要的情节:理想地图

在此处输入图像描述

使用谷歌地图有可能解决这个问题,但有没有办法使用传单解决这个问题?我应该如何修改下面的代码以获得理想的路线?谢谢!

代码:

library(dplyr)
library(leaflet)
library(geosphere)

# Source
latWaterloo <- 43.46687 
lngWaterloo <- -80.52464

# Destination
latTaiwan <- 23.5983
lngTaiwan <- 120.8354


m <- leaflet() %>% addTiles()
m <- addCircleMarkers(m, lng=c(lngWaterloo, lngTaiwan) , lat=c(latWaterloo, latTaiwan), popup=c("Waterloo","Taiwan"), radius=5, opacity=0.5)
geo_lines <- gcIntermediate(c(lngWaterloo, latWaterloo), c(lngTaiwan, latTaiwan), n=100, addStartEnd=T, sp=T, breakAtDateLine=F)
m <- addPolylines(m, data=geo_lines, color="blue")
m

m <- leaflet() %>% addTiles()
m

标签: rleafletmaps

解决方案


正如 Jean-Claude 在他的评论中所说,你的手绘路径比给出的路径要长gcIntermediate。要获得正确的路径,只需gcIntermediate调用breakAtDateLine=TRUE

geo_lines <- gcIntermediate(c(lngWaterloo, latWaterloo), c(lngTaiwan, latTaiwan), n=100, addStartEnd=TRUE, sp=TRUE, breakAtDateLine=TRUE)
m <- addPolylines(m, data=geo_lines, color="blue")
m

产生

截屏

我不知道是否有办法告诉leaflet复制路径的各个部分,因为它穿过日期线,以便它直接到达情节的边缘。


推荐阅读