如何缩放worldHires以在R上正确绘制海岸线?

时间:2017-04-24 03:59:34

标签: r maps

我正试图将海岸线和国家边界叠加到我绘制的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

1 个答案:

答案 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])在全球地图上可能看起来一样好。

我可以补充一点,在不久的将来,下一版“地图”将使这种经度变换更容易,而不需要额外的数据集。