2017-04-24 83 views
0

我试图将海岸线和国家边界叠加到我绘制的R地图上。如何规划worldhires在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

在你的问题中,你似乎将纬度值(-90:90)与矩阵索引混合在一起。由于地图分辨率为0.5度,因此这些地图运行0:360。经度也一样。

所以从你的问题,我不确定问题是否你的载体“lon”和“lat”不正确(他们应该可能是类似lon=seq(0,360,by=0.5); lat=seq(-90,90,by=0.5))。显然,map()命令期望坐标是度数。

但是您提供的链接上的插图显示数据在经度[0,360]上,而worldHires中的数据在[-180,180]上。 我认为最简单的解决方案是使用“world2Hires”,这是相同的地图,但经度转移到[0,360],这应该适合您的地图。

作为一个方面的说法,使用worldHires可能不是世界地图的最佳选择。世界某些地区的国家边界已经过时,高分辨率在全球范围内并不那么重要。只需使用“world2”(再次选择“2”即可转换为[0,360]),在全球地图上看起来可能会更好。

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