【问题标题】:Adding Curved Flight path using R's Leaflet Package使用 R 的 Leaflet 包添加弯曲飞行路径
【发布时间】:2015-12-28 19:05:40
【问题描述】:

目前我可以使用以下代码在国家之间画一条直线:

library(leaflet) 
leaflet() %>% addTiles() %>% addPolylines(lat=c(38.8833, 35.00), lng=c(-77.0167, 103.00))

我想要制作的是更真实的飞行路径,其中直线实际上是弯曲的。类似这样:

为了这个问题,我想在Leaflet 包中定制答案。任何帮助将不胜感激。

【问题讨论】:

    标签: r leaflet


    【解决方案1】:

    跟进 mrub,只需将您从 gcIntermediate 获得的对象传递给传单。像这样:

    library(leaflet)
    library(geosphere)
    gcIntermediate(c(5,52), c(-120,37),
                   n=100, 
                   addStartEnd=TRUE,
                   sp=TRUE) %>% 
    leaflet() %>% 
    addTiles() %>% 
    addPolylines()
    

    【讨论】:

    • 太棒了!你怎么知道将 gcIntermediate 传递给传单?
    • gcIntermediate 返回的对象的类是“SpatialLines”。并且传单非常喜欢该课程(或任何其他“空间...” :-)
    【解决方案2】:

    在尝试通过 einar 发布的方法显示多行时,我无法同时显示它们。经过大量挖掘,我发现了thisthis 的帖子。这是两个不同行的小代码。

    library(geosphere)
    library(leaflet)
    library(dplyr)
    
    lat_ny <- 40.73
    lng_ny <- -73.9
    lat_del <- 28.63
    lng_del <- 77.21
    lng_ca <- -121.6406
    lat_ca <- 39.16414
    
    inter1 <- gcIntermediate(c(lng_ny, lat_ny), c(lng_del, lat_del), n=10, addStartEnd=TRUE, sp = TRUE, breakAtDateLine = TRUE)
    lines(inter1)
    
    inter2 <- gcIntermediate(c(lng_ca, lat_ca), c(lng_del, lat_del), n=10, addStartEnd=TRUE, sp = TRUE, breakAtDateLine = TRUE)
    lines(inter2)
    
    inters <- c(inter1,inter2)
    
    ll0 <- lapply( inters , function(x) `@`(x , "lines") )
    ll1 <- lapply( unlist( ll0 ) , function(y) `@`(y,"Lines") )
    Sl <- SpatialLines( list( Lines( unlist( ll1 ) , ID = 1 ) ) )
    
    leaflet(Sl) %>% addTiles() %>% addPolylines()
    

    硬编码纬度和经度不是一个好主意,但由于我只能选择前 5 个连接位置,我没有花太多时间来索引列表。另外我还在检查它是否与 Shiny 集成。

    【讨论】:

      【解决方案3】:

      你正在寻找这样的东西:How to draw great circles 在答案中,使用了带有gcIntermediate()功能的包geosphere

      inter <- gcIntermediate(c(lon_1, lat_1), c(lon_2, lat_2), n=50, addStartEnd=TRUE)
      lines(inter)
      

      【讨论】:

      • 我正在寻找保留在Leaflet 包中的东西。可以在Leaflet 内部调用该函数吗?
      • 我不知道您只想使用leaflet。为此,您可以使用传单插件arc
      • 您能否提供一个在 R 中使用该插件的示例?在我看来,您提供的插件仅适用于 JavaScript。
      • 你说得对,目前无法从 R 中调用该插件。不过,我会看看其他选项,然后再报告。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多