使用R的Leaflet Package添加弯曲飞行路径

时间:2015-12-28 19:05:40

标签: r leaflet

目前,我可以使用以下代码在国家/地区之间绘制直线:

youtube.search.list

enter image description here

我尝试制作的是一条更加逼真的飞行路径,直线实际上是弯曲的。与此类似:

Curved Path Example

为了这个问题,我想在library(leaflet) leaflet() %>% addTiles() %>% addPolylines(lat=c(38.8833, 35.00), lng=c(-77.0167, 103.00)) 包中定制答案。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:14)

跟进mrub,只需将你从gcIntermediate获得的对象传递给leaflet。像这样的东西:

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

enter image description here

答案 1 :(得分:3)

在尝试通过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集成。

Output

答案 2 :(得分:2)

您正在寻找类似的内容:How to draw great circles 在答案中,使用了包含函数geosphere的包gcIntermediate()

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