Построение файла netcdf с уровнями в R

Недавно я начал работать с netcdf в R. Примеры данных здесь:

http://www.earthstat.org/data-download/> Убранная площадь и урожай для 175 культур> отдельные культуры> soybean_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

Я хочу построить каждый уровень, но не знаю, как извлечь данные для каждого уровня.

Вот как я извлекаю данные о долготе и широте:

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

lat <- ncvar_get(dat,"latitude") # extract lat

Но как мне извлечь отдельные уровни?

level.1 <- ncvar_get(dat, ????) 

Конечная цель - визуализировать каждый уровень, который я хочу визуализировать, используя следующую команду:

image(lon,lat, level)

person 89_Simple    schedule 28.11.2017    source источник


Ответы (1)


Вероятно, проще всего использовать пакет 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)

Другие методы построения графиков

spplot(s)

library(rasterVis)
levelplot(r1) 
levelplot(s)

И посмотрите другие пакеты отображения на CRAN

person Robert Hijmans    schedule 28.11.2017
comment
Есть ли функция для автоматического стека или уровней из файла ncdf? - person Herman Toothrot; 19.10.2018