Отображение кратчайшего пути полета через строку даты в буклете R / Shiny с использованием gcIntermediate [duplicate]
На этот вопрос уже есть ответ:
Составление маршрутов, пересекающих международную линию дат, с использованием библиотеки листовок в R 2 ответаЯ создаю карту австралийских аэропортов и их международных пунктов назначения с помощью R-Leaflet.
Вот мои образцы данных:
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)
)
Я подумал, что было бы здорово использовать изогнутые траектории полета с помощью gcIntermediate, поэтому я создал объект 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)
А потом я нарисовал это с помощью листовки и 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)
Это выглядит так:
Так что пути неверны, если они пересекают линию даты. Изменение breakAtDateLine на FALSE не исправляет это (линия исчезает, но путь все еще не работает). На этом этапе я подозреваю, что мне может понадобиться использовать другую систему картирования или что-то еще, но я был бы очень признателен, если у кого-то есть какой-либо совет.
Заранее спасибо