【问题标题】:Mapping temperature data from an .nc file in R从 R 中的 .nc 文件映射温度数据
【发布时间】:2017-03-07 21:56:52
【问题描述】:

我从 [NARR] (https://www.esrl.noaa.gov/psd/data/gridded/data.narr.monolevel.html) 下载了温度数据,特别是“2m 处的气温”-月平均值

我使用包“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

如果有人可以帮助我查看数据并将温度数据映射到北美,那就太好了。

谢谢!

【问题讨论】:

    标签: r mapping netcdf temperature


    【解决方案1】:

    您可以使用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 中处理空间数据,了解有关投影和转换的更多信息。

    【讨论】:

    • 帮助很大!谢谢!我想知道您是否知道是否可以平均多次来创建一个栅格图层?例如,如果我想要 1978-2016 年 12 月的平均温度?我不确定这些文件是否可以用 mean 之类的简单函数来处理。
    • 这是另一个问题 - 您可能应该查看 raster 包的文档和教程,然后如果您遇到问题,请在 gis.stackexchange.com 上提问 - zApply 可能会做您想做的事想要...
    猜你喜欢
    • 2019-06-21
    • 2020-11-23
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多