Here is a solution using the geosphere and maps package. Using the gcIntermediate function you can "intermediate points on a great circle inbetween the two points used to define the great circle."

Here is an example showing flight conncetions from the JKF airport (sample data from the nycflights13 package filtered with dplyr):

library(maps)
library(geosphere)
library(dplyr)
library(nycflights13)


usairports <- filter(airports, lat < 48.5)
usairports <- filter(usairports, lon > -130)
usairports <- filter(usairports, faa!="JFK")
jfk <- filter(airports, faa=="JFK")

map("world", regions=c("usa"), fill=T, col="grey8", bg="grey15", ylim=c(21.0,50.0), xlim=c(-130.0,-65.0))


for (i in (1:dim(usairports)[1])) {

inter <- gcIntermediate(c(jfk$lon[1], jfk$lat[1]), c(usairports$lon[i], usairports$lat[i]), n=200)

lines(inter, lwd=0.1, col="turquoise2")   
}

points(usairports$lon,usairports$lat, pch=3, cex=0.1, col="chocolate1")

转自:http://stackoverflow.com/questions/33122456/r-creating-a-world-network-map

posted on 2016-11-29 15:41  guoxiang  阅读(597)  评论(0编辑  收藏  举报