在投影地图上绘制连接线(mapproj、gcIntermediate)

在投影地图上绘制连接线(mapproj、gcIntermediate),r,map-projections,geosphere,R,Map Projections,Geosphere,我试图用Mollweide投影在世界地图上画线,但没有成功。我还在同一张地图上画了点,结果很好。对于这些行,我尝试将此示例改编为我的需要:。 我的预测试(ex中的步骤4)已经失败了。在下面的代码中,线路应该连接肯尼亚和澳大利亚。它运行时没有错误,但输出中没有行。(我还在没有mapproj的情况下测试了该示例,行就在那里。) 库(“地图”) 图书馆(“mapproj”) 图书馆(“地球圈”) 地图(“世界”,proj=“mollweide”,方位=c(90,0,0),填充=TRUE,col=“白色

我试图用Mollweide投影在世界地图上画线,但没有成功。我还在同一张地图上画了点,结果很好。对于这些行,我尝试将此示例改编为我的需要:。 我的预测试(ex中的步骤4)已经失败了。在下面的代码中,线路应该连接肯尼亚和澳大利亚。它运行时没有错误,但输出中没有行。(我还在没有mapproj的情况下测试了该示例,行就在那里。)

库(“地图”)
图书馆(“mapproj”)
图书馆(“地球圈”)
地图(“世界”,proj=“mollweide”,方位=c(90,0,0),填充=TRUE,col=“白色”,bg=“浅蓝色”)

朗克我根据托马斯·拉尔夫的书找到了解决问题的办法(见评论)。这是我的脚本(它有助于可视化作者发表文章的位置)

库(地图)
图书馆(地球圈)
图书馆(mapproj)
#加载数据

地点我根据托马斯·拉尔夫的书找到了解决问题的办法(见评论)。这是我的脚本(它有助于可视化作者发表文章的位置)

库(地图)
图书馆(地球圈)
图书馆(mapproj)
#加载数据

我想补充的是,mapproj和gcIntermediate的唯一用法与我在这里找到的代码相同:Rahlf,Thomas。与R.Springer的数据可视化,2017,内政部:10.1007/978-3-319-49751-8,p。345f。您可以下载脚本-->maps\u world\u great\u circles.r。我发现这个例子太复杂了,我没有运行它,在map(proj=myProj.type,orient=myProj.orient,wrap=T)中的第14行
:一些数据的投影失败了
,我想补充一点,在这里找到的同一代码中,mapproj和gcIntermediate的唯一用法是:Rahlf,Thomas。与R.Springer的数据可视化,2017,内政部:10.1007/978-3-319-49751-8,p。345f。您可以下载脚本-->maps\u world\u great\u circles.r。我发现这个例子太复杂了,我没有运行它,在map(proj=myProj.type,orient=myProj.orient,wrap=T)的第14行
:一些数据的投影失败
library("maps")
library("mapproj")
library("geosphere")

map("world",proj="mollweide", orientation= c(90,0,0), fill=TRUE, col="white", bg="lightblue")

lon_ke <- 38
lat_ke <- 1

lon_aus <- 133
lat_aus <- -27

inter <- gcIntermediate(c(mapproject(lon_ke,lat_ke), proj="mollweide", orientation= c(90,0,0)),
                        c(mapproject(lon_aus,lat_aus), proj="mollweide", orientation= c(90,0,0)),
                        n=50, addStartEnd=TRUE)
lines(inter)
library(maps) 
library(geosphere)
library(mapproj)

#load data
locations <- read.csv("articles-authors-locations.csv", header=TRUE, check.names = FALSE)

#plot map with Mollweide projection
myProj.type<-"mollweide"
myProj.orient<-c(90,0,0)
x<-map(proj=myProj.type,orient=myProj.orient,wrap=T,fill=TRUE, col="white", bg="lightblue",xlim=range(locations$ArticleLong),ylim=range(locations$ArticleLat)
       ) 

#plot jittered points for authors' locations
myStartP<-mapproject(jitter(locations$AuthorLong,amount=3),jitter(locations$AuthorLat, amount=1),proj=myProj.type,orient=myProj.orient)
points(myStartP,col="darkblue",pch=20,cex=1)

#set transparent colors
myTColour<-rgb(0,0,0,50,maxColorValue=255)
red_transp <- adjustcolor("red", alpha.f = 0.4) 

#plot lines and jittered points, connecting authors' and articles locations
for (i in 1:nrow(locations))
{
myGC1<-gcIntermediate(c(locations$AuthorLong[i],locations$AuthorLat[i]),c(locations$ArticleLong[i],locations$ArticleLat[i]),addStartEnd=T, n=50)
moll<-mapproject(myGC1[,1],myGC1[,2],projection=myProj.type,orientation=myProj.orient) 
lines(moll$x,moll$y,lwd=2.5,col=myTColour)
myDestP<-mapproject(
  jitter(locations$ArticleLong[i], amount=3),
  jitter(locations$ArticleLat[i], amount=1),
  proj=myProj.type,orient=myProj.orient)
points(myDestP,col=red_transp,pch=20,cex=1)
}