Есть несколько вещей, которые вы можете попробовать. Одним из них является использование опции breakAtDateLine = TRUE
в gcIntermediate
:
df2 <- gcIntermediate(
p1, p2,
n = 72,
addStartEnd = TRUE,
sp = T,
breakAtDateLine = T)
leaflet( ) %>%
setView(lng = df$Longitude.Central[[1]], lat = df$Latitude.Central[[1]], 1) %>%
addTiles(urlTemplate = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") %>%
addPolylines(data = df2, weight = 1
)
Как вы можете видеть, она ломает линию, но продолжает ее в левой части экрана, что не идеально.
![enter image description here](https://i.stack.imgur.com/bBYmR.jpg)
Еще одна вещь, которую мы могли бы попробовать, - запустить функцию gcIntermediate с помощью breakAtDateLine = FALSE
и вручную настроить широту и долготу после . запустить функцию. Это будет проще всего, если мы установим sp=FALSE
.
Обратите внимание, что нам нужно только исправить линии, которые идут на восток от нашего местоположения - это единственные, которые пересекают линию даты. Это не будет одинаковым для всех локаций, но логика c должна быть похожей.
p1 <- as.matrix(df[,c(1,2)])
p2 <- data.frame(df[,c(3,4)])
df2 <- gcIntermediate(
as.matrix(p1),
as.matrix(p2),
n = 72,
addStartEnd = TRUE,
breakAtDateLine = F,
sp = F)
# correct the longitudes
res <- lapply(df2, function(x) {
# if direction is east, correct lon, else don't
if(x[,'lon'][2] - x[,'lon'][1] > 0){
cbind(lon =ifelse(x[,'lon']<0, x[,'lon'] + 360, x[,'lon']), lat = x[,'lat'])
} else {
x
}
})
# and convert back to sp (I just took this code from the gcIntermediate function)
for (i in 1:length(res)) {
if (!is.list(res[[i]])) {
res[[i]] <- Lines(list(Line(res[[i]])), ID = as.character(i))
}
else {
res[[i]] <- Lines(list(Line(res[[i]][[1]]), Line(res[[i]][[2]])),
ID = as.character(i))
}
}
res <- SpatialLines(res, CRS("+proj=longlat +ellps=WGS84"))
leaflet() %>%
setView(df$Latitude.Central[[1]], lat = df$Longitude.Central[[1]], 1) %>%
addTiles(urlTemplate = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") %>%
addPolylines(data = res, weight = 1)
![enter image description here](https://i.stack.imgur.com/Dwv2o.png)
Это все равно немного странно, когда достигает вершины карты, но, надеюсь, это то, с чем вы можете жить