使用光栅包绘制netcdf文件会导致表示失真,R

时间:2017-06-08 02:11:45

标签: r maps geospatial spatial r-raster

我想正确绘制此netcdf文件:http://www.filedropper.com/sshgridsv16092015060412nc(最初从here: https://opendap.jpl.nasa.gov/opendap/allData/merged_alt/L4/cdr_grid/contents.html下载)

但遇到问题:

我应该能够绘制栅格(SLA变量):

library(RNetCDF)
library(raster)
library(maptools)

d <- raster("ssh_grids_v1609_2015060412.nc.nc4", varname = "SLA")

plot(d)
#plot SLA

但结果非常奇怪,因为你可以看到提供的文件。

特别是在绘制世界地图时:

data(wrld_simpl)
plot(wrld_simpl, add = T) 

他们根本不匹配:/

所以我想也许问题在于经度(从4.839944e-09到360)

然后我读了那个raster :: rotate(d)

应该是完美的(经度为-180到180),但它不会让我。我收到此警告信息:

Warning message:
In .local(x, ...) :
  this does not look like an appropriate object for this function

plot(d) 

看起来仍然一样。

非常感谢任何建议!

干杯

1 个答案:

答案 0 :(得分:1)

Netcdf文件不仅在经度上“旋转”,而且x和y也在错误的位置。它在netcdf中输入的方式显然不常见 我直接在the OpenDap server下载了netcdf,因为你的filedropper链接似乎已损坏了 无论如何,这是我的主张:

library(raster)
library(maptools)

d <- raster("ssh_grids_v1609_2015060412.nc.nc4", varname = "SLA")

# transpose x to y and double flip the map
m.r <- flip(flip(t(d), direction = "y"), direction = "x")

# then rotate from 0:360 to -180:180
rm.r <- rotate(m.r)

data(wrld_simpl)

plot(rm.r)
plot(wrld_simpl, add = T)