我正试图将海岸线和国家边界叠加到我绘制的R地图上。
我正在尝试简单的 worldHires 功能来执行此操作,但它无法正确缩放到我的地图上。我从https://www.esrl.noaa.gov/psd/data/gridded/data.UDel_AirT_Precip.html下载了我的数据,文件名是precip.mon.total.v401
这是我的代码,当我尝试绘制我的地图时(不包括读取数据和变量的前几行到R中):
>image.plot(lon,lat,precip[,ncol(precip):1,8],
main="Precipitation (August, 2001)",
xlab=expression(paste("Longitude(",degree,"E)")),
ylab=expression(paste("Latitude(",degree,"N)")),
zlim=c(0,15),xlim = c(min(lon),max(lon)),
ylim = c(min(lat),max(lat)),cex=0.5)
> map('world2Hires', fill=FALSE, add=T)
来自world2Hires的边界层非常小,纬度为-90到90,经度为0到360。
我的数据范围是纬度-180到180和经度0到720.那么如何缩放world2Hires以匹配我的数据?或者那是不可能的? See image in link
答案 0 :(得分:0)
在您的问题中,您似乎将纬度值(-90:90)度与矩阵索引混合。由于地图的分辨率为0.5度,因此它们的运行范围为0:360。经度也一样。
所以从你的问题来看,我不确定问题是你的矢量“lon”和“lat”是不正确的(它们可能应该是lon=seq(0,360,by=0.5); lat=seq(-90,90,by=0.5)
)。显然,map()命令期望坐标为度。
但是您提供的链接上的插图显示,当worldHires中的数据为[-180,180]时,数据位于经度[0,360]。 我认为最简单的解决方案是使用“world2Hires”,这是相同的地图,但经度转移到[0,360],这应该适合你的地图。
作为旁注,使用worldHires可能不是世界地图的最佳选择。世界某些地区的国家边界已经过时,高分辨率在全球范围内并不那么重要。只使用“world2”(“2”再次转换为[0,360])在全球地图上可能看起来一样好。
我可以补充一点,在不久的将来,下一版“地图”将使这种经度变换更容易,而不需要额外的数据集。