Мне трудно работать с имеющимися у меня данными netcdf. Я просмотрел примеры здесь ( Создание файла netcdf с уровнями в R ), но я думаю, что я что-то упустил.
Я пытаюсь построить глубину смешанного слоя для региона к югу от 35 градусов. Данные можно найти здесь (последний файл внизу страницы): http://www.ifremer.fr/cerweb/deboyer/mld/Surface_Mixed_Layer_Depth.php
файл содержит 7 переменных, каждая из которых содержит широту, долготу, время (12 месяцев) и значение глубины смешанного слоя.
Пока у меня есть:
MLD <- "mld_DReqDTm02_c1m_reg2.0.nc"
MLD <- nc_open(MLD)
print(MLD)
есть 7 переменных, и я хочу только 'mld'
lon <- ncvar_get(MLD, varid = "lon")
lat <- ncvar_get(MLD, varid = "lat")
summary(lon)
summary(lat)
MLD$dim$time$units
MLD_1.array <- ncvar_get(MLD, "mld")
dim(MLD_1.array)
length(lon)
length(lat)
ndvi.slice <- MLD_1.array[, , 12]
dim(ndvi.slice)
mld.vec.long <- as.vector(MLD_1.array)
length(mld.vec.long)
nlon <- dim(lon)
nlat <- dim(lat)
lonlat <- expand.grid(lon, lat)
t <- ncvar_get(MLD, "time")
tunits <- ncatt_get(MLD, "time", "units")
nt <- dim(t)
dname <- "mld"
tmp.mat <- matrix(mld.vec.long, nrow = nlon * nlat, ncol = nt)
dim(tmp.mat)
head(na.omit(tmp.mat))
lonlat <- expand.grid(lon, lat)
tmp.df02 <- data.frame(cbind(lonlat, tmp.mat))
names(tmp.df02) <- c("lon", "lat", "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
library(reshape)
tmp.df03 <- melt(tmp.df02, id=c("lat","lon"))
tmp.df04 <- subset(tmp.df03, lat >= "-35" & lat <="-80")
tmp.df04[tmp.df04 ==1.000e+09] <- NA
tmp.df04
summary(tmp.df04)
target = c(-180, 180, -90, -20)
w <- crop(rgeos::gBuffer(spTransform(countriesLow, CRS(pprj)), width = 0))
Я могу построить это с помощью ggplot после извлечения данных в файл .csv, удаления значений маски, повторного импорта и повторного построения графика (это занимает некоторое время ...).
Есть ли способ, которым я могу извлечь одну переменную (mld), а затем найти максимальное значение для каждого месяца (времени) и построить график? Я знаю, что мой код очень грязный и нестабильный ...
любая помощь будет высоко ценится! благодарю вас!