我从[NARR](https://www.esrl.noaa.gov/psd/data/gridded/data.narr.monolevel.html)专门下载了温度数据"气温为2米" - 月份意味着
我使用包" ncdf4"打开了文件。数据有4个维度 - 时间,x,y,nbnds。 y对应于lat,x对应于lon。有一个称为空气的变量(不是维度),我不知道如何使用,虽然这是温度信息。
我的最终目标是使用每年每个月的平均温度数据(北京地图)绘制温度数据(12个地图,每个月一个)。
我无法确定如何使用数据,因为所有维度都只是很长的数字列表似乎没有意义(例如,x坐标看起来像这样:6232896 6265359 6297822 6330285 6362748 6395211 6427674 6460137 6492600 6525063 6557526 6589989,以及y值和时间)。
以下是我用来查看维度的代码:
temp2m <- nc_open("air.2m.mon.mean.nc")
time <- temp2m$dim$time$vals
lat <- temp2m$dim$x$vals
lon <- temp2m$dim$y$vals
nbnds <- temp2m$dim$nbnds$vals
如果有人可以帮助我查看数据以及将温度数据映射到北美,这将是非常好的。
谢谢!
答案 0 :(得分:4)
您可以使用raster
包将这些内容读入stack
:
> library(raster)
> air = stack("./air.2m.mon.mean.nc")
(注意,您可能需要使用netcdf驱动程序编译的光栅包...)
然后您可以按片或时间名称绘制它们:
> plot(air[[23]])
> plot(air[["X1979.10.01.01.01.15"]])
堆栈打印如下:
> air
class : RasterStack
dimensions : 277, 349, 96673, 450 (nrow, ncol, ncell, nlayers)
resolution : 32462.99, 32463 (x, y)
extent : -16231.49, 11313351, -16231.5, 8976020 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=lcc +x_0=5632642.22547 +y_0=4612545.65137 +lat_0=50 +lon_0=-107 +lat_1=50 +lat_2=50 +ellps=WGS84
names : X1979.01.01.00.01.15, X1979.02.01.00.01.15, X1979.03.01.00.01.15, X1979.04.01.01.01.15, X1979.05.01.01.01.15, X1979.06.01.01.01.15, X1979.07.01.01.01.15, X1979.08.01.01.01.15, X1979.09.01.01.01.15, X1979.10.01.01.01.15, X1979.11.01.00.01.15, X1979.12.01.00.01.15, X1980.01.01.00.01.15, X1980.02.01.00.01.15, X1980.03.01.00.01.15, ...
并且这些坐标实际上并不是纬度很长,而是位于由“coord.ref。”描述的变换坐标系中。串。如果你想把它放在一张拉长的地图上,你需要扭曲它:
> air_ll = projectRaster(air[[1]],crs="+init=epsg:4326")
> plot(air_ll)
将任何其他数据转换为此系统可能会更好,并保持网格不被投影。只需查看如何处理R中的空间数据,以获取有关投影和变换的更多信息。