Mapa da trajetória de vôo mais curta na linha de data no folheto R / Shiny, usando gcIntermediate [duplicado]

Esta pergunta já tem uma resposta aqui:

Traçar rotas que cruzam a linha de dados internacional usando a biblioteca de folhetos no R 2 respostas

Estou criando um mapa dos aeroportos australianos e seus destinos internacionais usando o R-Leaflet.

Aqui estão meus dados de amostra:

df<-data.frame("Australian_Airport" = "Brisbane", 
           "International" =  c("Auckland", "Bandar Seri Begawan","Bangkok","Christchurch","Denpasar","Dunedin","Hamilton","Hong Kong","Honiara","Kuala Lumpur"),
           "Australian_lon" = c(153.117, 153.117,153.117,153.117,153.117,153.117, 153.117, 153.117, 153.117, 153.117),
           "Australian_lat" = c(-27.3842,-27.3842,-27.3842,-27.3842,-27.3842,-27.3842, -27.3842, -27.3842, -27.3842, -27.3842),
           "International_lon" = c(174.7633, 114.9398, 100.5018, 172.6362, 115.2126,-82.77177, -84.56134, 114.10950, 159.97290, 101.68685),
           "International_lat" = c(-36.848460, 4.903052, 13.756331, -43.532054,-8.670458,28.019740, 39.399501, 22.396428, -9.445638,  3.139003)
           )

Eu pensei que seria legal usar caminhos de vôo curvos usando gcIntermediate, então criei um objeto SpatialLines:

library(rgeos)
library(geosphere)

p1<-as.matrix(df[,c(3,4)])

p2<-as.matrix(df[,c(5,6)])

df2 <-gcIntermediate(p1, p2, breakAtDateLine=F, 
                    n=100, 
                    addStartEnd=TRUE,
                    sp=T) 

E então eu plotei usando o folheto e Shiny:

server <-function(input, output) {

airportmap<- leaflet() %>% addTiles() %>% 
    addCircleMarkers(df, lng = df$Australian_lon, lat = df$Australian_lat, 
    radius = 2, label = paste(df$Australian_Airport, "Airport"))%>% 
    addPolylines(data = df2, weight = 1)

output$mymap <- renderLeaflet({airportmap}) # render the base map
  }


ui<-  navbarPage("International flight path statistics - top routes",
      tabPanel("Interactive map",

      leafletOutput('mymap',  width="100%", height=900)

         )
         )

# Run the application 
shinyApp(ui = ui, server = server)

Se parece com isso

Portanto, os caminhos estão incorretos se cruzarem a linha da data. Alterar breakAtDateLine para FALSE não o corrige (a linha desaparece, mas o caminho ainda está quebrado). Nesta fase, suspeito que possa precisar usar um sistema de mapeamento diferente ou algo assim, mas ficaria muito grato se alguém tiver algum conselh

Desde já, obrigado

questionAnswers(2)

yourAnswerToTheQuestion