【问题标题】:How do I scale worldHires to plot coastlines correctly on R?如何缩放 worldHires 以在 R 上正确绘制海岸线?
【发布时间】:2017-04-24 16:26:14
【问题描述】:

我正在尝试将海岸线和国家边界覆盖到我绘制的 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

【问题讨论】:

    标签: r maps


    【解决方案1】:

    在您的问题中,您似乎将纬度值 (-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])在全球地图上可能看起来一样好。

    我可能会补充说,在不久的将来,“地图”的下一个版本将使这种经度的移动变得更加容易,而无需额外的数据集。

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多