在R

时间:2016-10-04 15:27:43

标签: r maps

所以我想创建一个地图,并有一条连接两个经度和纬度点的线,我已经想到了。但我需要帮助才能显示该线路的方向。所以在下面的例子中,我想展示一条从卡利到德克萨斯的箭头。另一个问题是如何绘制该线以使其不会越过陆地。因此,在这个例子中,从卡利到德克萨斯的线路将从太平洋通过巴拿马运河并最终到达德克萨斯(基本上该线路全部在水域中绘制)。我不确定这是否可行,但任何帮助将不胜感激。

以下是代码:

library(maps)
library(geosphere)


xlim=c(-171.738281, -56.601563)
ylim=c(12.039321, 71.856229)
map("world", col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05, xlim=xlim,  ylim=ylim)

lat_ca=39.164141
lon_ca=-121.640625
lat_tx=29.954935
lon_tx=-98.701172
inter2=gcIntermediate(c(lon_ca, lat_ca), c(lon_tx, lat_tx), n=50,     addStartEnd=TRUE)
lines(inter2, col="red",lwd = 12)

1 个答案:

答案 0 :(得分:1)

对于问题的第一部分,箭头,尝试在大圆路径的最后部分添加一个箭头,如下所示:

arrows(x0=inter2[51,'lon'], y0=inter2[51,'lat'], x1=inter2[52,'lon'], 
       y1=inter2[52,'lat'], col="red",lwd = 12)

我在这里放了51和52,因为它们是你的大圆圈的最后两行,但更好的解决方案是

arrows(x0=inter2[nrow(inter2)-1,'lon'], y0=inter2[nrow(inter2)-1,'lat'], 
      x1=inter2[nrow(inter2),'lon'], y1=inter2[nrow(inter2),'lat'], col="red",lwd = 12)