使用 R 中的级别绘制 netcdf 文件

89_*_*ple 2 r raster netcdf netcdf4

我最近开始在 R 中使用 netcdf。示例数据在这里:

http://www.earthstat.org/data-download/ > 175 种作物的收获面积和产量 > 个别作物 > 大豆_HarvAreaYield2000_NetCDF

在这个文件夹中,有一个名为的 netcdf 文件 soybean_AreaYieldProduction.nc

这就是我打开 netcdf 的方式

 library(ncdf4)

 dat <- nc_open("soybean_AreaYieldProduction.nc")
 print(soy)

1 variables (excluding dimension variables):
    float soybeanData[longitude,latitude,level,time]  
LayerDescriptions: struct(5).Data(:,:,1/2/3/4/5/6) to access data layer: 1=Harvested Area fraction, 2=Yield 3=Harvested Area data quality, 4=Yield data quality, 5=Harvested Area in hectares, 6= Production
        Units: Harvested Area Fraction(1)=percent of gridcell that was harvested, Yield(2)=metric tons per hectare, Harvested Area Hectares(5)=total hectares harvested per gridcell, Production(6)=Metric Tons
        DataQuality: In levels 3 and 4, a value of 1 = county; .75 = state; .5 = interpolated from within 2 degrees lat/long; .25 = country; 0 = missing.
4 dimensions:
        longitude  Size:4320
        units: longitude
        latitude  Size:2160
        units: latitude
        level  Size:6
        time  Size:1
Run Code Online (Sandbox Code Playgroud)

我想绘制每个级别,但不知道如何为每个级别提取数据。

这就是我提取 lon 和 lat 数据的方式:

lon <- ncvar_get(dat,"longitude") # extract long

lat <- ncvar_get(dat,"latitude") # extract lat
Run Code Online (Sandbox Code Playgroud)

但是我如何提取个人级别?

level.1 <- ncvar_get(dat, ????) 
Run Code Online (Sandbox Code Playgroud)

最终目标是使用以下命令可视化我想要可视化的每个级别:

image(lon,lat, level)
Run Code Online (Sandbox Code Playgroud)

Rob*_*ans 5

使用这个raster包可能是最简单的:

library(raster)
r1 <- raster("soybean_AreaYieldProduction.nc", level=1)
r2 <- raster("soybean_AreaYieldProduction.nc", level=2)

plot(r1)
image(r1) 
s <- stack(r1, r2)
plot(s)
Run Code Online (Sandbox Code Playgroud)

其他绘图方法

spplot(s)

library(rasterVis)
levelplot(r1) 
levelplot(s)
Run Code Online (Sandbox Code Playgroud)

并查看 CRAN 上的其他映射包