Относительно извлечения данных из нескольких кордиантов из нескольких файлов nc и объединения в один растр

У меня есть 365 файлов .nc за один год, каждый из которых содержит информацию о влажности почвы за один день. Я хочу извлечь информацию о влажности почвы из трех разных координат и записать их в три CSV-файла за данный год. В настоящее время я могу преобразовать все 365 файлов .nc в 365 файлов csv, как указано в прикрепленном коде. Как действовать дальше?

rm(list = ls())
library(raster)
library(ncdf4)
ptf <- "D://SMOS_ECV_SM//SMOS_ECV_SM//ECV_SM_Data_1978_2010//1978"
setwd(ptf) # change your working directory
lf <- list.files(pattern="[.]nc$") # list of files ending in .nc
for(i in lf){
  nc.brick <- brick(i)
  nc.df <- as.data.frame(nc.brick[[1]], xy=T)
  write.csv(nc.df, sub("[.]nc$",".csv",i)) # write to the same file name substituting .nc to .csv
}

person fantasy_world    schedule 22.06.2020    source источник


Ответы (1)


Вы должны быть в состоянии сделать что-то вроде ниже

library(raster)
ptf <- "D://SMOS_ECV_SM//SMOS_ECV_SM//ECV_SM_Data_1978_2010//1978"
ff <- list.files(path=ptf, pattern="[.]nc$", full.names=TRUE)

s <- stack(ff)
points <- rbind(c(0,1), c(100,120), c(80,5))
v <- extract(s, points)

for (i in 1:ncol(v)) {
  write.csv(v[,i,drop=FALSE], paste0("file", i, ".csv"))
}
person Robert Hijmans    schedule 22.06.2020
comment
Я получил следующую ошибку. Ошибка в if (is.na(get(has_proj_def.dat, envir = .RGDAL_CACHE))) { : аргумент имеет нулевую длину. Кроме того: Предупреждающее сообщение: В .varName(nc, varname, warn = warn): используется имя : sm Если это не так, вы можете установить его на одно из: sm, sm_noise, флаг, датчик - person fantasy_world; 23.06.2020